我是three.js的新手,我需要加载一个粒子对象 如果在顶点上添加粒子
,它似乎有效如果我加载我的Json一次并在load()内部我构建2个不同的THREE.Points当我移动第一个第二个也移动如果我使用2个不同的加载调用并且每个内部我构建一个THREE.Points对象每个对象可以单独移动
这是我在animate中调用的函数
function animateParticles( particleSystem, particleSystemOriginal, deltaTime ) {
var vertsOriginal = particleSystemOriginal.geometry.vertices;
var verts = particleSystem.geometry.vertices;
for(var i = 0; i < verts.length; i++) {
var vertOriginal = vertsOriginal[i]; // original position
var vert = verts[i]; // cloud position
var vertOriginalY = vertOriginal.y;
var vertY = vert.y;
if (i==1) console.log("vertOriginalY " + vertOriginalY + " vertY " + vertY);
vert.y = vertY - (10 * deltaTime); // move
}
particleSystemOriginal.geometry.verticesNeedUpdate = true;
particleSystem.geometry.verticesNeedUpdate = true;
}
我需要加载两次相同的对象来移动其中一个
,这似乎很奇怪在我的功能中我只是测试和移动云鸽,但我想要的是摇动粒子,所以我需要知道粒子原始位置并设置粒子新位置
编辑1
我像这样加载我的模型
var loader = new THREE.JSONLoader();
loader.load('../3d-models/creati/mymodel-001.json', function(geometry, materials) {
var material = new THREE.MeshNormalMaterial();
var particleModelOriginal = new THREE.Mesh( geometry, material );
var particleModel = particleModelOriginal.clone();
/* build particle THREE.Points */
particleSystemOriginal = new THREE.Points(particlesOriginal, particleMaterial);
particleSystem = new THREE.Points(particles, particleMaterial);
//particleSystem = particleSystemOriginal.clone();
});
答案 0 :(得分:0)
如果我正确理解了这个问题,如果要创建多个对象,则可能需要在要加载的网格/几何体上使用.clone()
对象。否则它们引用相同的对象,并且如果其中一个被修改,它们都将被修改