Я импортирую модель анимированной руки робота .fbx. Я хочу использовать сетку со скелетом, но визуализировать gl.POINTS вместо стандартной сетки.
Вот моя первая (наивная) попытка. Я меняю местами отдельные элементы с THREE.Mesh на THREE.Points:
loader.load('/robot-arm-01.fbx', (object) => {
let children = object.children.map(child => {
child.material = new THREE.ShaderMaterial({
vertexShader,
fragmentShader,
skinning: true
})
let points = new THREE.Points(child.geometry, child.material)
points.position.copy(child.position)
points.scale.copy(child.scale)
points.rotation.copy(child.rotation)
return points
})
object.children = children
})
Проблема определенно не в моем вершинном шейдере, который я могу воспроизвести анимацию, если я не поменяю местами дочерний массив.
Благодаря этому моя модель отображается правильно с помощью gl.POINTS, но моя анимация просто не работает. Что мне здесь не хватает?
Моя единственная идея - изменить вызов отрисовки меша three.js с gl.TRIANGLES на gl.POINTS во время выполнения. Как это сделать и есть ли более разумный подход к проблеме?