参考https://jsfiddle.net/pmankar/svt0nhuv/
主要的大型红色二十面体几何体围绕y轴旋转。我添加了一个小的红色球体几何体,并将其合并到主要的大型红色二十面体几何体中。直到这里它工作正常。为此,我使用了THREE.GeometryUtils.merge(point_sphere_iso_geom, sphere);
但是,当我尝试通过鼠标单击动态添加球体时,会添加它们(黄色球体),但它们不会与主要的大型红色二十面体几何体一起旋转。
任何人都可以解释为什么它在初始情况下有效,但在动态添加时不能解决,以及如何动态实现它。
答案 0 :(得分:1)
我希望我能正确理解你。每次单击鼠标,您必须基于前一个几何体(网格几何和网格矩阵)创建新几何体,将其与新球体的几何体合并,并将其应用于新网格,然后移除旧网格并添加新网格之一。
vars的一些变化
var geometry, material, point_sphere_iso_geom, mesh;
创建开始合并网格
point_sphere_iso_geom = new THREE.IcosahedronGeometry(100, 4);
cygeo = new THREE.SphereGeometry(5, 10, 10);
cygeo.translate(0,0,120);
point_sphere_iso_geom.merge( cygeo );
mesh = new THREE.Mesh(point_sphere_iso_geom, material);
和addYellowPoint的功能
function addYellowPoint(valX, valY) {
var sgeometry = new THREE.SphereGeometry(2.5, 10, 10);
var range = 150;
var x = Math.random() * range - range / 2;
var y = Math.random() * range - range / 2;
var z = Math.random() * range - range / 2;
sgeometry.translate(x,y,z);
point_sphere_iso_geom = mesh.geometry.clone();
point_sphere_iso_geom.applyMatrix(mesh.matrix);
point_sphere_iso_geom.merge(sgeometry);
scene.remove(mesh);
mesh.geometry.dispose();
mesh.material.dispose();
mesh = new THREE.Mesh(point_sphere_iso_geom, material);
scene.add(mesh);
}