0
phong 재질을 사용하여 버퍼 지오메트리 오브젝트를 렌더링하려하지만 검정색으로 표시됩니다. 나는 이전에 기본 자료를 사용했고 올바르게 렌더링합니다. 조명을 확인하기 위해 퐁 재료로 입방체를 그렸고 눈에 띄었다.Buffergeometry가 phongmaterial으로 검은 색으로 표시됩니다.
오류가 발생하는 최소 코드로 압축했습니다. 정점 색상보다는 오히려 facecolors를 사용하고 있을지도 모르지만 나는 확실하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
var cubeGeometry = new THREE.CubeGeometry(1,1,1);
var material = new THREE.MeshPhongMaterial({color: 0x000044});
var cube = new THREE.Mesh(cubeGeometry, material);
cube.position.z = 10;
scene.add(cube);
을 그리고 buffergeometry 큐브를 생성하는 코드는 그렇지 않습니다 :
이 코드는 작동 그것은 법선 누락 된
squareMat = new THREE.MeshPhongMaterial({
color: 0x0000ff,
vertexColors: THREE.FaceColors
});
for (i = 0; i < verts.length; i += 4) {
//set 4 points
a = verts[i];
b = verts[i + 1];
c = verts[i + 2];
d = verts[i + 3];
for (j = 0; j < a.length; j += 1) {
a[j] = (a[j] * cubesize) + offsets[j];
b[j] = (b[j] * cubesize) + offsets[j];
c[j] = (c[j] * cubesize) + offsets[j];
d[j] = (d[j] * cubesize) + offsets[j];
}
vol.vertices.push(new THREE.Vector3(a[0], a[1], a[2]));
vol.vertices.push(new THREE.Vector3(b[0], b[1], b[2]));
vol.vertices.push(new THREE.Vector3(c[0], c[1], c[2]));
vol.vertices.push(new THREE.Vector3(d[0], d[1], d[2]));
idx = i/2;
face1 = faces[idx];
face2 = faces[idx + 1];
colval = face1[3];
facecolor = new THREE.Color(colval);
f1 = new THREE.Face3(face1[0], face1[1], face1[2]);
f2 = new THREE.Face3(face2[0], face2[1], face2[2]);
f1.color = facecolor;
f2.color = facecolor;
vol.faces.push(f1);
vol.faces.push(f2);
}
bufferVol = new THREE.BufferGeometry().fromGeometry(vol);
volMesh = new THREE.Mesh(bufferVol, squareMat);
scene.add(volMesh);
씬에 광원이 있습니까? – prisoner849
basicMaterial이 작동하고 다른 것들은 잘못되었거나 법선이 누락되거나 누락 된 광원 일 수 있습니다. –