WEBGL Three.js如何创建与网格大小相同的长方体



我想AABB colsion,所以我制作了一个相同大小的MESH立方体我试试这个。但效果并不好。

zmesh = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial(  { /*map: THREE.ImageUtils.loadTexture( filepath )*/ }  ));
zmesh.position.set( x, y, z );
zmesh.scale.set( s, s, s );
zmesh.rotation.x = - Math.PI / 2;
scene.add( zmesh ); 
Object.push( zmesh );
var BOX =   new THREE.Mesh( new THREE.CubeGeometry(10, 10, 10 ), new THREE.MeshLambertMaterial({ color : 0xFFF0FF }));
BOX.position.set( x, y, z );
scene.add(BOX);
COLLISION.push( BOX );

如何创建相同大小网格的长方体?????

这是我在编辑器上使用的代码:

[历史参考文献(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;

注意:Viewport.js的当前(2015-4-30)版本位于/editor/js目录中。

相关内容

  • 没有找到相关文章

最新更新