Все, что я хочу сделать, это загрузить OBJ-файл и перевести его координаты в мировое происхождение (0,0,0), чтобы элементы управления орбиты работайте отлично (нет точек опоры).Три JS: Загрузите OBJ, переведите в исходное положение (в центре на сцену), орбита
Я хотел бы загрузить случайные объекты OBJ с различными геометриями/центрами и перевести их автоматически в происхождение сцены. Другими словами, «жестко закодированное» решение для перевода для конкретной модели не будет работать
Это один из самых распространенных сценариев для трех JS (основного 3D-зрителя объектов), поэтому я удивлен Я не могу найти окончательное решение на SO.
К сожалению, есть много старых ответов с устаревшими функциями, поэтому я бы очень признателен за новый ответ, даже если есть похожие решения.
Вещей я пытался
ниже код подходит объект красиво к камере, но не решает проблему/орбитальный перевода.
// подгонка камеры к объекту var bBox = новый THREE.Box3(). SetFromObject (сцена); var height = bBox.size(). Y; var dist = высота/(2 * Math.tan (камера.fov * Math.PI/360)); var pos = scene.position;
// fudge factor, так что объект не занимает весь вид camera.position.set (pos.x, pos.y, dist * 0.5); camera.lookAt (pos);
По-видимому, geometry.center() хорош для перевода координат объекта обратно в начало координат, но THREEx.GeometryUtils.center заменен геометрией.center(), и я продолжаю получать ошибки при попытке использовать его ,
при загрузке OBJs, геометрия теперь заменена буфером геометрии. Я не могу представить буферную геометрию в геометрию, чтобы использовать функцию center(). мне нужно разместить это в потоке объекта> дочерний цикл так? это кажется излишне сложным.
geometry = new THREE.Geometry(). FromBufferГеометрия (child.geometry);
Мой код - очень простой OBJLoader.
var objLoader = new THREE.OBJLoader();
objLoader.setPath('assets/');
objLoader.load('BasketballNet_Skull.obj', function (object) {
object.traverse(function (child) {
if (child instanceof THREE.Mesh) {
child.material = material;
}
});
scene.add(object);
});
(BTW первый реальный вопрос на SO да простят любые вопросы форматирования/Noob)
Благодарим за сообщение NikhilSN, но на самом деле это не то, что я ищу, может быть, вопрос слишком длинный/неопределенный. В основном проблема - с учетом любого загруженного OBJ, как вы переводите его координаты в центр, чтобы камера и орбитальные управления «просто работали». – lukemunn