【发布时间】:2023-03-10 06:51:01
【问题描述】:
我是 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();
});
【问题讨论】:
-
能否也包括您如何加载对象?
标签: three.js