나는이 question을 공부했지만, 아직 이해가 가지 않습니다. 가능한 가장 짧은 코드는 Pyramid
이 완전히 회색 인 반면, 나는 pyramid
다른 색을 구성하는 6을 제공하려고 시도합니다. 그래서 ... 왜이 색들이 나타나지 않는 걸까요?JavaFX 3D 컬러링 얼굴 ... 다시
나는이 질문에서 getTexCoords().addAll(..)
명세서를 빌 렸지만 분명히 여전히 잘못된 것을하고있다. uv mapping
입니까? 어쨌든 그게 뭐야? 토폴로지 설명 (sphere
< ->map
)을 보았지만 텍스처/색상과 관련이 있습니다 ...?
당신의 도움을 주셔서 감사합니다 - 마이클 PhongMaterial
javadoc 한 번 봐 가지고, 자바 FX 3D는 주어진 3 차원 형상의 색상을 정의하는 방법을 이해하기 위해
public class ColoredPyramid extends Application {
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root, 200, 200, true);
primaryStage.setTitle("Colored Pyramid");
primaryStage.setScene(scene);
primaryStage.show();
TriangleMesh colouredPyramid = new TriangleMesh();
float height = 100;
float hypotenuse = 150;
colouredPyramid.getPoints().addAll(0, 0, 0); //0-index:: top
colouredPyramid.getPoints().addAll(0, height, -hypotenuse/2); //1-index:: x=0, z=-hyp/2 ==> Closest to user
colouredPyramid.getPoints().addAll(-hypotenuse/2, height, 0); //2-index:: x=hyp/2, z=0 ==> Leftest
colouredPyramid.getPoints().addAll(hypotenuse/2, height, 0); //3-index:: x=hyp/2, z=0 ==> rightest
colouredPyramid.getPoints().addAll(0, height, hypotenuse/2); ////4-index:: x=0, z=hyp/2 ==> Furthest from user
//Next statement copied from stackoverflow.com/questions/26831871/coloring-individual-triangles-in-a-triangle-mesh-on-javafx
colouredPyramid.getTexCoords().addAll(
0.1f, 0.5f, // 0 red
0.3f, 0.5f, // 1 green
0.5f, 0.5f, // 2 blue
0.7f, 0.5f, // 3 yellow
0.9f, 0.5f // 4 orange
);
colouredPyramid.getFaces().addAll(0, 0, 2, 0, 1, 0); //Left front face ---> RED
colouredPyramid.getFaces().addAll(0, 1, 1, 1, 3, 1); //Right front face ---> GREEN
colouredPyramid.getFaces().addAll(0, 2, 3, 2, 4, 2); //Right back face ---> BLUE
colouredPyramid.getFaces().addAll(0, 3, 4, 3, 2, 3); //Left back face ---> RED
colouredPyramid.getFaces().addAll(4, 4, 1, 4, 2, 4); //Base: left triangle face ---> YELLOW
colouredPyramid.getFaces().addAll(4, 0, 3, 0, 1, 0); //Base: right triangle face ---> ORANGE
MeshView meshView = new MeshView(colouredPyramid);
Group group = new Group(meshView);
group.setTranslateX(100);
group.setTranslateY(80);
root.getChildren().add(group);
}
public static void main(String[] args) {
launch(args);
}
}
당신이 대답해야 할 첫 번째 질문 : 어디 이미지가 당신 것입니다 텍스처로 적용할까요? 설정 한 텍스처 좌표가 해당 이미지를 조사합니다. 힌트 : 이미지가 필요하고 물질 확산 맵을 설정해야합니다. –
호세 감사합니다.하지만 ... 당신을 이해하지 못합니다. 버텍스를 텍스처에 매핑하는 데 이미지가 필요한 이유는 무엇입니까? –
Btw, 내 텍스트의 코드 비트를 '강조 표시'하는 사람에게 : 어떻게해야합니까? 감사합니다 ... –