2012-06-13 1 views
3

Three.js로 간단한 2D 장면을 만드는 데 문제가 있습니다. 색깔이있는 삼각형에 2D보기를 만들고 싶습니다. 삼각형을 채색 할 수 없습니다 (예 : 빨간색). - 내가 어떤 그림자를 원하지 않는다> 즉 THREE.Geometry() 빨간색 three.js를 사용하는 기본 2D 색 삼각형

에 색, 단지

  • THREE.OrthographicCamera
  • 간단한 삼각형 : 나는 내가 그것에 대해 다음이 필요합니다 믿고 정사영 장면에서 간단한 빨간색 2D 삼각형. 그것을 만드는 방법에 대한 모든 제안은 환영합니다.

답변

5

기본 기하학 클래스를 사용하려는 경우 모든 고유 정점을 장면에 추가해야합니다. 당신은 [... 우리가 다음 우리의 정점에서 얼굴을 구성하기 위해, 당신은 위에 밀어 순서대로 정점의 인덱스를 전달해야합니다 그래서

var geometry = new THREE.Geometry(); 
var v1 = new THREE.Vector3(0,0,0); // Vector3 used to specify position 
var v2 = new THREE.Vector3(1,0,0); 
var v3 = new THREE.Vector3(0,1,0); // 2d = all vertices in the same plane.. z = 0 

// add new geometry based on the specified positions 
geometry.vertices.push(v1); 
geometry.vertices.push(v2); 
geometry.vertices.push(v3); 

처럼 정점 클래스와

을 수행 할 수 있습니다 EDIT] : mrdoob이 아래에서 지적했듯이 시계 반대 순서로 추가해야합니다.

enter image description here

내 바이올린의 문제였다. fixed demo here을 볼 수 있습니다.

geometry.faces.push(new THREE.Face3(0, 2, 1)); 

마지막으로 재질을 만들어 지오메트리와 결합하여 메쉬를 만듭니다. 2D의 경우에도 이것을 표시하기 위해 메쉬를 만들어야한다고 생각합니다.

var redMat = new THREE.MeshBasicMaterial({color: 0xff0000}); 
var triangle = new THREE.Mesh(geometry, redMat); 
scene.add(triangle)        // added at the origin 
+2

EDIT : mrdoob에게 감사드립니다. THREE.Vertex는 더 이상 지원되지 않습니다. 정점은 단순히 벡터 위치로 푸시됩니다. –

+0

답장을 보내 주셔서 감사합니다. 나는 기본적으로 똑같지 만 검은 색 만 보았습니다. 나는 틀린 일을해야만합니다. 빨간색으로 보입니까? –

+0

흠, 옳은 것 같습니다. 나는 방금이 [jsfiddle here] (http://jsfiddle.net/hyvng/5/)을 설정했고 색깔도 얻지 못하고있다. 무엇이 잘못되었는지 확실하지 않습니다. 아마도 mrdoob은 무엇이 잘못 되었을지에 대한 또 다른 대답을 줄 수 있습니다. CubeGeometry가 대신 만들어 지도록 선의 주석을 제거하면 잘 렌더링됩니다. –