我正在使用三个.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)