【发布时间】:2021-01-15 22:27:41
【问题描述】:
我正在尝试在 Three.js 中的 OBJ 模型的每个顶点上放置粒子。 期望的结果应该是这样的
https://codepen.io/consolacao/pen/Cdjmi
控制台显示我的 OBJ 已经正常加载,它可以访问 OBJ 模型的属性...但是屏幕上什么都没有显示
我尝试过更改模型,从缓冲区几何更改为几何......但没有运气
谁能帮帮我?
var manager = new THREE.LoadingManager();
manager.onProgress = function ( item, loaded, total ) {
console.log('webgl, twice??');
console.log( item, loaded, total );
};
var p_geom = new THREE.BufferGeometry();
var p_material = new THREE.PointsMaterial({
color: 0xd48908
});
function loadModel() {
const loader = new OBJLoader(manager);
loader.load ('src/models/faceyface.obj', function (face) {
face.position.y = 10;
face.traverse( function ( child ) {
if (child.isMesh) {
var position = child.geometry.getAttribute('position');
var normal = child.geometry.getAttribute('normal');
for (let i=0; i< position.array.length; i+=3) {
const pos = new THREE.Vector3(position.array[i],
position.array[i+1],
position.array[i+2]);
const norm = new THREE.Vector3(normal.array[i],
normal.array[i+1],
normal.array[i+2]);
p_geom.position.copy(pos);
var particles = new THREE.Points(p_geom,
p_material);
const target =
pos.clone().add(norm.multiplyScalar(10.0));
particles.lookAt(target);
}
scene.add(particles)
}
})
});
}
【问题讨论】:
-
为什么要在点的循环内创建新几何体和新点材质?
-
我试过把它放在循环之外,但它并没有影响模型/粒子的显示
标签: three.js