小编Ale*_*rez的帖子

将相机聚焦在Three.js中的物体中心

我正在使用三个.js中的ColladaLoader加载和对象,所以我在场景中有一堆对象.其中一些是常规形状,如:立方体,球体等,对于这些,我可以这样做:

var position = { 
  x: selectedObject.position.x, 
  y: selectedObject.position.y, 
  z: selectedObject.position.z 
};

controls.target = new THREE.Vector3(position);
Run Code Online (Sandbox Code Playgroud)

其中控件是相机的OrbitControls.相机在该位置居中并且工作正常,问题是当对象不是常规形状,而是由顶点生成的几何.在这种情况下,我已经尝试了4种不同的方法而没有预期的结果.

1.

var position = { 
  x: selectedObject.matrixWorld.getPosition().x, 
  y: selectedObject.matrixWorld.getPosition().y, 
  z: selectedObject.matrixWorld.getPosition().z 
};
Run Code Online (Sandbox Code Playgroud)

2.

var centerX = selectedObject.geometry.boundingSphere.center.x;
var centerY = selectedObject.geometry.boundingSphere.center.y;
var centerZ = selectedObject.geometry.boundingSphere.center.z;

var position = { x: centerX, y: centerY, z: centerZ };
Run Code Online (Sandbox Code Playgroud)

3.

getCentroid(selectedObject.geometry.vertices);

function getCentroid(vertices) {
  var x = y = z = 0;
  vertices.forEach(function (element, index, array) {
    x += element.x;
    y += element.y;
    z += element.z; …
Run Code Online (Sandbox Code Playgroud)

javascript three.js

1
推荐指数
1
解决办法
5165
查看次数

标签 统计

javascript ×1

three.js ×1