Ich versuche, eine dynamische Geometrie, um die Haut, sondern nach der Zugabe vonThree.js material.skinning = true Ursachen Shader-Kompilierung-Fehler
material.skinning = true
mir einen Kompilierungsfehler Shader, die „zu vielen Uniformen“, erklärt.
Ich habe bereits this Github Issue gefunden, aber es ist geschlossen und schlägt keine Lösung vor. weder verstehe ich generell das Problem, sondern als mein Objekt hat viel Geometrie, noch Knochen Ich verstehe nicht, wie das viele Uniformen (> 1024 nach meiner Max Uniform Vektoren here) nur hinzugefügt werden kann, da der skinning=true
Mein Code :
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);
Danke :)
r75