这是我在编辑器上使用的代码:
[历史参考 (r50)]
https://github.com/mrdoob/three.js/blob/r50/gui/js/ui/Viewport.js#L34-38
var selectionBox = new THREE.Mesh( new THREE.CubeGeometry( 1, 1, 1 ), new THREE.MeshBasicMaterial( { color: 0xffff00, wireframe: true } ) );
selectionBox.geometry.dynamic = true;
selectionBox.matrixAutoUpdate = false;
selectionBox.visible = false;
sceneHelpers.add( selectionBox );
https://github.com/mrdoob/three.js/blob/r50/gui/js/ui/Viewport.js#L141-183
var geometry = object.geometry;
if ( geometry.boundingBox === null ) {
geometry.computeBoundingBox();
}
selectionBox.geometry.vertices[ 0 ].x = geometry.boundingBox.max.x;
selectionBox.geometry.vertices[ 0 ].y = geometry.boundingBox.max.y;
selectionBox.geometry.vertices[ 0 ].z = geometry.boundingBox.max.z;
selectionBox.geometry.vertices[ 1 ].x = geometry.boundingBox.max.x;
selectionBox.geometry.vertices[ 1 ].y = geometry.boundingBox.max.y;
selectionBox.geometry.vertices[ 1 ].z = geometry.boundingBox.min.z;
selectionBox.geometry.vertices[ 2 ].x = geometry.boundingBox.max.x;
selectionBox.geometry.vertices[ 2 ].y = geometry.boundingBox.min.y;
selectionBox.geometry.vertices[ 2 ].z = geometry.boundingBox.max.z;
selectionBox.geometry.vertices[ 3 ].x = geometry.boundingBox.max.x;
selectionBox.geometry.vertices[ 3 ].y = geometry.boundingBox.min.y;
selectionBox.geometry.vertices[ 3 ].z = geometry.boundingBox.min.z;
selectionBox.geometry.vertices[ 4 ].x = geometry.boundingBox.min.x;
selectionBox.geometry.vertices[ 4 ].y = geometry.boundingBox.max.y;
selectionBox.geometry.vertices[ 4 ].z = geometry.boundingBox.min.z;
selectionBox.geometry.vertices[ 5 ].x = geometry.boundingBox.min.x;
selectionBox.geometry.vertices[ 5 ].y = geometry.boundingBox.max.y;
selectionBox.geometry.vertices[ 5 ].z = geometry.boundingBox.max.z;
selectionBox.geometry.vertices[ 6 ].x = geometry.boundingBox.min.x;
selectionBox.geometry.vertices[ 6 ].y = geometry.boundingBox.min.y;
selectionBox.geometry.vertices[ 6 ].z = geometry.boundingBox.min.z;
selectionBox.geometry.vertices[ 7 ].x = geometry.boundingBox.min.x;
selectionBox.geometry.vertices[ 7 ].y = geometry.boundingBox.min.y;
selectionBox.geometry.vertices[ 7 ].z = geometry.boundingBox.max.z;
selectionBox.geometry.computeBoundingSphere();
selectionBox.geometry.verticesNeedUpdate = true;
selectionBox.matrixWorld.copy( object.matrixWorld );
selectionBox.visible = true;
注意:当前 (2015-4-30) 版本的Viewport.js位于/editor/js 目录中。