Ich brauche Hilfe, damit UV-Texturen in three.js richtig gerendert werden. Ich habe ein Modell mit sich wiederholender Fliesentextur in Blender erstellt. Die Kacheltextur wird mit UV-Mapping angewendet und sieht so aus, wenn sie richtig gerendert wird: . Wenn sie jedoch mit JSONLoader von three.js geladen wird, werden die Kacheln nur so gestreckt, dass sie jedes Polygon ausfüllen, was merkwürdig ist Ergebnis wie folgt: Screenshot of render using three.js . Ich habe versucht, THREE.RepeatWrapping in meinem Code Einstellung aber nichts geändert:THREE.js wiederholt UV-Textur mit JSONLoader
bodyLoader = new THREE.JSONLoader();
bodyLoader.load('./starofthesea_threejs.json', function(geometry, materials) {
mainBodyMaterials = new THREE.MeshFaceMaterial(materials);
console.log(materials);
mainBodyMaterials.wrapS = THREE.RepeatWrapping;
mainBodyMaterials.wrapT = THREE.RepeatWrapping;
mainBodyMaterials.needsUpdate = true;
mainBody = new THREE.Mesh(geometry, mainBodyMaterials);
mainBody.traverse (function (child) {
if (child instanceof THREE.Mesh) {
child.castShadow = true;
child.receiveShadow = true;
}
});
mainBody.scale.x = mainBody.scale.y = mainBody.scale.z = 1;
geometry.computeBoundingBox();
geometry.computeFaceNormals();
geometry.computeFlatVertexNormals();
scene.add(mainBody);
});
Gibt es etwas falsch in meinem Code oder Problemumgehung, um es richtig gemacht? Jede Hilfe wird sehr geschätzt.
Nur ein Gedanke, müssen Sie die MainBodyMaterials.repeat.set (10, 10) festlegen; und müssen die Texturen eine Stärke von 2 Breiten haben? – Sentinel
Wenn Sie die Wiederholungsfunktion auf Material setzen, wird nur ein "undefinierter" Fehler ausgegeben, und alle Dimensionen der Texturen werden bereits auf 2 eingestellt – kychung