Войти
РаботаФорумРазовая работа

Написать поведение 3D камеры Three.js

#0
(Правка: 14 ноя. 2018, 0:23) 23:42, 13 ноя. 2018

Сцена такая:
Есть сфера (планета). Она расположена чуть левее от середины экрана.

Нужно реализовать следующий функционал:
При драге мышкой, камера вращается вокруг центра сферы, но смотрит не в центр, а так, чтобы сфера располагалась левее середины экрана.
Можно кликать на поверхность сферы в любое место.
При клике на сферу нужно чтобы камера подлетала в позицию чуть сверху и сбоку от точки клика и смотрела на точку клика.

Можно либо камерой подлетать как надо, либо сферу перемещать как надо.

писать можно в скупе: bhagivad
в телегу: @maxmonax


#1
(Правка: 1:14) 1:12, 14 ноя. 2018

я бы как-то так сделал:

var g_xang=0; var /*vec3d*/ up_dir=[0,0,1]; var some_koef=Pi2/view_port.wh.x;

var upd_view=(/*vec3*/obj_pos,/*real*/offset)=>{
  var vec=ang2ongroundvec(up_dir,g_xang)*offset;
  var view_point=obj_pos+vec;
  var view_dir=cross(up_dir,vec);

  return make_matrix_from(view_point,view_dir);
}

var on_drag=(dx,dy)=>g_xang+=dx*some_koef;

#2
9:44, 14 ноя. 2018

Adler
> я бы как-то так сделал
ты сделай действующий прототип, а я тебе заплачу.

#3
(Правка: 17:40) 16:23, 14 ноя. 2018

TMonax
> ты сделай действующий прототип, а я тебе заплачу.
сделал: https://github.com/adler3d/Threejs3dCam

upd: https://adler3d.github.io/Threejs3dCam/oct14.html#SphereGeometry

upd2:
а, да, вот это ещё не сделал:

Можно кликать на поверхность сферы в любое место.
При клике на сферу нужно чтобы камера подлетала в позицию чуть сверху и сбоку от точки клика и смотрела на точку клика.

#4
(Правка: 24 ноя. 2018, 17:00) 20:28, 14 ноя. 2018

Adler
> а, да, вот это ещё не сделал
да, самое главное)

#5
(Правка: 15:41) 15:39, 15 ноя. 2018

Классная задача :)


пока забиндил кнопку 'C' для "клика по сфере" и кнопу "F" для "клика вне сферы"
где-то ближе к концу видео зажал "С"

прикручиваю скролл/zoom

РаботаФорумРазовая работа