1
我想对皮肤有动态几何但增加three.js所material.skinning =真正原因着色器编译错误
material.skinning = true
我得到它指出:“太多的制服”的着色器编译错误之后。
我已经找到this Github Issue但它已关闭,并未提出解决方案。 我大致明白这个问题,但我的目标既不是有很大的几何形状,也没有骨头,我不明白,很多制服(> 1024据我最大的统一载体here)如何可以添加的,只是因为skinning=true
我的代码:
var material = new THREE.MeshLambertMaterial({color: 0xAABBAA, skinning: true});
var maxLength = Math.max(geom.vertices[0].y, geom.vertices[geom.vertices.length-1].y);
// calculate skinweigths
for(var i = 0; i < MAXRESOLUTION; i++){
var skinIndex = geom.vertices[i].y > 0? 1 : 0;
var skinWeight = Math.abs(geom.vertices[i].y/maxLength);
geom.skinIndices.push(new THREE.Vector4(skinIndex, skinIndex + 1, 0, 0));
geom.skinWeights.push(new THREE.Vector4(1 - skinWeight, skinWeight, 0, 0));
}
// create new mesh
var newMesh = new THREE.SkinnedMesh(geom, material);
skeleton.bones[0].position.y = geom.vertices[0].y;
skeleton.bones[1].position.y = -geom.vertices[0].y;
// combine mesh with skeleton
var root = skeleton.bones[0];
newMesh.add(root);
newMesh.bind(skeleton);
谢谢:)
R75