3D Shapes 3개 핵심 Properties가 존재 1.Material 표면의 재질을 설정합니다.

Slides:



Advertisements
Similar presentations
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Advertisements

2013 년 목 차 용어의 정의 위기경보 수준 국가 생물테러 대응 체계도 반 · 팀별 소방의 임무.
Class diagram. 클래스 클래스 이름 연산 속성 2 class Transportation { private int maximumPassenger; private double speed; public void depart(); public void stop();
Web Project 작업3: Design기획 Article 토론 Group Project 토론
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
상속에 대해 알아봅니다. 상속과 클래스 계층구조 메소드 오버라이딩
제 3 장 변수와 자료형.
Implement of Input and Interaction
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C++ Espresso 제1장 기초 사항.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
Computer Graphics Laboratory Korea University
축산 인식개선을 위한 농협의 추진 사례 ( ) 농협중앙회 축산지원단장 박인희.
가상현실 Chap 1. VRML 동의대학교 멀티미디어공학과 김형석 /A25002 컴퓨터 그래픽스
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
제12장 유연한 카메라 클래스 만들기 학기 컴퓨터게임(DirectX).
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
8. 객체와 클래스 (기본).
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환 5장 관측
학습목표 7장. 투상변환과 뷰포트변환 평행투상과 원근투상의 차이점을 이해한다. 가시부피 설정방식을 이해한다.
학습목표 7장. 투상변환과 뷰포트변환 평행투상과 원근투상의 차이점을 이해한다. 가시부피 설정방식을 이해한다.
명품 JAVA Programming.
Internet Computing KUT Youn-Hee Han
C++ Espresso 제9장 다형성.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
Red Color Detection Course ChanYoung Kim
Red Color Detection Course ChanYoung Kim
문 성 원 3D Game Programming QuadTree Culling 문 성 원 KoreaIT 전문학교 게임학과.
명품 JAVA Essential.
6장 히스토그램 처리 차 례 히스토그램의 개요 히스토그램의 용도 영상 이치화 히스토그램 평활화 히스토그램 스트레칭
명품 Java Programming.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
HTML5 웹 프로그래밍 입문 (개정판) 5장. 고급 표현을 위한 CSS3 활용.
12장 유연한 카메라 클래스 만들기 한성대학교 멀티미디어공학과 게임 프로그래밍-I 강의노트
시간대별 점등제어 계획 철새 비도래시기 춘계[3~5월] / 하계[6~8월] / 추계[9~10월]
HTML5+CSS3 실무 테크닉 김은기 저.
C++ Programming: chapter 7 – inheritence
김 정 석 Web Programming 김 정 석
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
엽기토끼 죽이기 팀명 : 청순가련.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
adopted from KNK C Programming : A Modern Approach
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
어서와 Java는 처음이지! 제9장 인터페이스, 패키지.
Draw the basic Geometry Objects
Terrain.
Web & Internet [06] CSS3 응용과 레이아웃
컴퓨터공학실습(I) 3주 인공지능연구실.
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
【 6월 1일 】 (‘오늘의 용기 내일의 희망’ 중에서...)
JA V A W. 07 Sb.L.
[ 단원 06 ] 상속과 다형성.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
빛 의 합 성 과 학 1 학년 Ⅱ. 빛 > 2. 빛의 색( 8/8 ) [초기 화면]
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
자바 프로그래밍 Thread를 이용한 애니메이션 서울호서전문학교 게임프로그램개발과.
제안 제도 운영방안.
컴퓨터 계측 및 실습 C++ 기초 영남대학교 기계공학부.
게임수학 제 9 장 가시성 판단.
시외버스 안내방송 연결 메뉴얼 DAEWOO BS106 안내방송 배선 연결도[2008년 이후 모델]
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
2장 선과 글자 모양에 따른 분류 제품 제작을 하기 위한 도면에는 제품의 정보인 형상, 치수,
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
[색채지각 ] Color Perception.
G20 Summit 관련 공항이용 안내 공지 에어칼린 한국총판대리점 감사합니다. 항공보안등급 상향일정
C.
첨부 1. 불꽃 위치도 ※ 불꽃 발사 장소 : 수원월드컵경기장 남측 P4 주차장 뒤편 공원 (붉은색 원표시 부분)
Presentation transcript:

3D Shapes 3개 핵심 Properties가 존재 1.Material 표면의 재질을 설정합니다. Type은 추상 class Material. 구현된 파생 class PhongMaterial. 2.DrawMode 개체의 그리는 방법을 설정한다. Type은 enum DrawMode. Member Line : polygon을 Wireframe으로 그린다. Member Fill : polygon을 면으로 그린다. 3.CullFace 3D Shape의 Face의 전면 후면중,제외시킬 대상을 설정한다. Type은 enum CullFace. Member None : Culling을 하지 않는다. Member Back : 후면을 제외한다. Member Front : 전면을 제외한다.

3D Shapes public void start(Stage primaryStage) { //Shape3D 파생 클래스를 선언 Box box = new Box(100, 100, 100); //표면의 재질을 설정한다. box.setMaterial(new PhongMaterial(Color.AQUAMARINE)); //개체의 그리는 방법을 설정한다. box.setDrawMode(DrawMode.LINE); //다면체의 면을 추려내는 방법 설정 box.setCullFace(CullFace.BACK); //생성된 개체를 화면에 추가. Group shapGroup = new Group(box); BorderPane root = new BorderPane(shapGroup, null, null, null, null); Scene scene = new Scene(root, 640, 480); primaryStage.setScene(null); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); }

3D Shapes 테스트를 위한 추가적인 속성 RotationAxis 대상 Shape의 회전축(x,y,z)을 지정할 수 있다. 각 대상 축을 양수로 지정할 경우는 각 축에서 중심을 바라보는 기준으로 시계방향으로 회전한다. 각 대상 축을 음수로 지정할 경우는 각 축에서 중심을 바라보는 기준으로 반 시계방향으로 회전한다. Rotate RotationAxis를 기준으로 Shape를 설정한 각도만큼 회전시킨다. TranslateX 대상의 X축 위치를 변형한다. TranslateY 대상의 Y축 위치를 변형한다. TranslateZ 대상의 Z축 위치를 변형한다.

3D Shapes public void start(Stage primaryStage) { Box box = new Box(100, 100, 100); //표면의 재질을 설정한다. box.setMaterial(new PhongMaterial(Color.AQUAMARINE)); //개체의 그리는 방법을 설정한다. //box.setDrawMode(DrawMode.LINE); //다면체의 면을 추려내는 방법 설정 box.setCullFace(CullFace.BACK); //회전의 기준을 X축으로 지정한다, 양수 일 경우는 시계방향,음수 일 경우는 반시계방향으로 회전한다. box.setRotationAxis(new Point3D(1, 0, 0)); //개체를 특정 angle만큼 회전시킨다. box.setRotate(20); //생성된 개체를 화면에 추가. Group shapGroup = new Group(box); BorderPane root = new BorderPane(shapGroup, null, null, null, null); Scene scene = new Scene(root, 640, 480); primaryStage.setScene(null); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); }

3D Shapes 파생 클래스 별 특성 1.정의된 클래스 Sphere Sphere() – 기본값으로 Sphere를 생성한다. (Default Radius 1, Default Division 64 ) Sphere(double radius) – Sphere의 반경을 지정하여 생성한다. Sphere(double radius, int divisions) – Sphere의 반경을 지정, Sphere를 구성하는 면의 분열 개수를 설정. ( 최소값은 1이며, 1보다 작은값이 설정되더라도 1이하로는 변경되지 않는다.) Cylinder Cylinder() – 기본값으로 Cylinder를 생성한다. (Default Radius 1, Default Height 2, Default Division 64 ) Cylinder (double radius, double height) – Cylinder의 반경,높이를 지정하여 생성한다. Cylinder (double radius, double height, int divisions) - Cylinder의 반경,높이를 지정 , Cylinder를 구성하는 면의 분열 개수를 설정. ( 최소값은 3이며, 3보다 작은값이 설정되더라도 3이하로는 변경되지 않는다.) Box Box() – 기본값으로 Box를 생성한다. (Default Width 2, Default Height 2, Default Depth 2 ) Box(double width, double height, double depth) – Box크기를 지정하여 생성한다,(Width X, Height Y, Depth Z)

3D Shapes Box example public void start(Stage primaryStage) { //Box의 width(x축 길이), height(y축 길이), depth(z축 길이)를 지정한다. Box box = new Box(100,20,300); //표면의 재질을 설정한다. box.setMaterial(new PhongMaterial(Color.AQUAMARINE)); //개체의 그리는 방법을 설정한다. box.setDrawMode(DrawMode.LINE); //다면체의 면을 추려내는 방법 설정 box.setCullFace(CullFace.BACK); //회전의 기준을 X축으로 지정한다, 양수 일 경우는 시계방향,음수 일 경우는 반시계방향으로 회전한다. box.setRotationAxis(new Point3D(1, 1, 0)); //개체를 특정 angle만큼 회전시킨다. box.setRotate(20); Group shapGroup = new Group(box); BorderPane root = new BorderPane(shapGroup, null, null, null, null); Scene scene = new Scene(root, 640, 480); primaryStage.setScene(null); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); }

3D Shapes Cylinder example public void start(Stage primaryStage) { //구의 반경과, 구 의 면 분열 개수를 지정. Cylinder cylinder = new Cylinder(100,100,2); //표면의 재질을 설정한다. cylinder.setMaterial(new PhongMaterial(Color.AQUAMARINE)); //개체의 그리는 방법을 설정한다. cylinder.setDrawMode(DrawMode.LINE); //다면체의 면을 추려내는 방법 설정 cylinder.setCullFace(CullFace.BACK); //회전의 기준을 X,Y축으로 지정한다, 양수 일 경우는 시계방향,음수 일 경우는 반시계방향으로 회전한다. cylinder.setRotationAxis(new Point3D(1, 1, 0)); //개체를 특정 angle만큼 회전시킨다. cylinder.setRotate(20); Group shapGroup = new Group(cylinder); BorderPane root = new BorderPane(shapGroup, null, null, null, null); Scene scene = new Scene(root, 640, 480); primaryStage.setScene(null); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); }

3D Shapes Sphere example public void start(Stage primaryStage) { //구의 반경과, 구 의 면 분열 개수를 지정. Sphere sphere = new Sphere(100,1); //표면의 재질을 설정한다. sphere.setMaterial(new PhongMaterial(Color.AQUAMARINE)); //개체의 그리는 방법을 설정한다. sphere.setDrawMode(DrawMode.LINE); //다면체의 면을 추려내는 방법 설정 sphere.setCullFace(CullFace.BACK); //회전의 기준을 X,Y축으로 지정한다, 양수 일 경우는 시계방향,음수 일 경우는 반시계방향으로 회전한다. sphere.setRotationAxis(new Point3D(1, 1, 0)); //개체를 특정 angle만큼 회전시킨다. sphere.setRotate(20); Group shapGroup = new Group(sphere); BorderPane root = new BorderPane(shapGroup, null, null, null, null); Scene scene = new Scene(root, 640, 480); primaryStage.setScene(null); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); }

3D Shapes 파생 클래스 별 특성 2.사용자 정의 클래스 MeshView Points - 3차원 형상의 모든 꼭지점의 좌표 정보. TexCoords – 3D Shape에 Face별로 질감을 입할 좌표 정보를 입력한다. Faces – 면을 구성하는 Points,TextCoords의 정보. FaceSmoothingGroups – 면을 연결할 그룹의 정보.

3D Shapes MeshView example 1.1 public void start(Stage primaryStage) { MeshView meshView = new MeshView(createPyramid()); //개체의 그리는 방법을 설정한다. meshView.setDrawMode(DrawMode.FILL); //표면의 재질을 설정한다. PhongMaterial mat = new PhongMaterial(); mat.setDiffuseMap(new Image(getClass().getResourceAsStream("brush.png"))); meshView.setMaterial(mat); //다면체의 면을 추려내는 방법 설정. meshView.setCullFace(CullFace.BACK); //회전의 기준을 X축으로 지정한다, 양수 일 경우는 시계방향,음수 일 경우는 반시계방향으로 회전한다. meshView.setRotationAxis(new Point3D(1, 1, 0)); //개체를 특정 angle만큼 회전시킨다. meshView.setRotate(20); Group shapGroup = new Group(meshView); BorderPane root = new BorderPane(shapGroup, null, null, null, null); Scene scene = new Scene(root, 640, 480); primaryStage.setScene(null); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); }

3D Shapes MeshView example 1.2 private TriangleMesh createPyramid() { float h = 150; // Height float w = 300; // Side TriangleMesh mesh = new TriangleMesh(); mesh.getPoints().addAll( 0, 0, 0, // Point 0 - Top 0, h, -w / 2, // Point 1 - Front -w / 2, h, 0, // Point 2 - Left w / 2, h, 0, // Point 3 - Right 0, h, w / 2 // Point 4 - Back ); mesh.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 mesh.getFaces().addAll( 0, 0, 2, 0, 1, 0, // Front left face 0, 1, 1, 1, 3, 4, // Front right face 0, 0, 3, 0, 4, 0, // Back right face 0, 0, 4, 0, 2, 0, // Back left face 4, 0, 1, 0, 2, 0, // Bottom rear face 4, 0, 3, 0, 1, 0 // Bottom front face mesh.getFaceSmoothingGroups().addAll(0,0,0,0); return mesh; }

3D Shapes MeshView.FaceSmoothingGroups example 1.1 public void start(Stage primaryStage) { MeshView meshView = new MeshView(createPyramid()); //개체의 그리는 방법을 설정한다. meshView.setDrawMode(DrawMode.FILL); //표면의 재질을 설정한다. PhongMaterial mat = new PhongMaterial(Color.HOTPINK); meshView.setMaterial(mat); //다면체의 면을 추려내는 방법 설정. meshView.setCullFace(CullFace.NONE); //회전의 기준을 X축으로 지정한다, 양수 일 경우는 시계방향,음수 일 경우는 반시계방향으로 회전한다. meshView.setRotationAxis(new Point3D(1, 1, 0)); //개체를 특정 angle만큼 회전시킨다. meshView.setRotate(20); Group shapGroup = new Group(meshView); BorderPane root = new BorderPane(shapGroup, null, null, null, null); Scene scene = new Scene(root, 640, 480); primaryStage.setScene(null); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); }

3D Shapes MeshView.FaceSmoothingGroups example 1.2 private TriangleMesh createPyramid() { float h = 300; // Height float w = 300; // Side TriangleMesh mesh = new TriangleMesh(); mesh.getPoints().addAll( 0, 0, 0, // Point 0 - LeftTop w, 0,100, // Point 1 - RightTop 0, h, 100, // Point 2 - LeftBottom w, h, 0 // Point 3 - RightBottom ); //TextureCoordinates위치 정보를 설정한다. mesh.getTexCoords().addAll( 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f mesh.getFaces().addAll( 0, 0, 2, 2, 3, 3, // Front LeftBottom face 0, 0, 3, 3, 1, 1 // Front RightTop face //Face와 Face가 만나는 부분을 SmootingGroup로 설정한다. //mesh.getFaceSmoothingGroups().addAll(0,0); mesh.getFaceSmoothingGroups().addAll(1,1); return mesh; }