我目前正在使用以下内容在three.js中创建一个网格:
sphereGeometry = new THREE.SphereGeometry( 1, 16,16 );
mesh = new THREE.Mesh( sphereGeometry, material );
我也创造了一个圆环:
torusGeometry = new THREE.TorusGeometry( 1, 0.42 );
在我的动画循环中的任何一点,我希望能够将球体换成圆环。这可能吗?如何将一个几何图形换成另一个几何图形?
答案 0 :(得分:11)
在Three.js R59中,setGeometry和setMaterial再次从Three.Mesh中移除
替换几何图形的方法是从场景中删除网格,然后使用新几何图形和旧材质创建一个新网格,并将其添加回场景。这肯定会起作用:)
答案 1 :(得分:5)
切换几何形状可能成本很高。我只想根据你的情况将两者都添加到场景中并隐藏/显示。
答案 2 :(得分:0)
您可以使用SetGeometryCommand
实时更改网格的几何形状。
用法:
editor.execute( new SetGeometryCommand( object, new THREE[ geometry.type ](
radiusTop,
radiusBottom,
height,
radialSegments,
heightSegments,
openEnded
) ) );
https://github.com/mrdoob/three.js/blob/dev/editor/js/commands/SetGeometryCommand.js
答案 3 :(得分:-2)
试着看一下:http://threejs.org/docs/58/#Reference/Objects/Mesh
特别是这种方法:
mesh.setGeometry(geometry)
以下是如何在渲染循环中执行此操作(无论何时要将球体交换为圆环,都要设置标记)
var flag;
...
function render () {
if (flag) {
mesh.setGeometry(torusGeometry);
flag = false;
}
}
render();
如果你想来回翻转(在渲染循环内):
if (conditions) {
mesh.setGeometry(sphereGeometry);
}
if (condition) {
mesh.setGeometry(torusGeometry);
}