「초입문 코드 10선!」【Processing-3D】

9372 단어 processingprocessing3

소개



개인적으로 생각하는 초기본적이고 필요하다고 생각하는 3D용 Processing의 코드입니다.
( 「초필수 코드 10선!」【Processing】의 필수 코드는 생략되었습니다.)

1. size (500, 500, P3D);



3D 공간에서 화면의 가로와 세로 크기를 각각 500px로 한다.
Reference: size();

2. point(250,250,250);



좌표 (250,250,250)의 위치에 점을 그립니다.
Reference: point();

3. box(10, 20, 30);



폭 10px, 높이 20px, 깊이 30px(x, y, z축 방향 각각에 10,20, 30px의 길이)의 직육면체를 그린다.
Reference: box();

4. sphere(100);



반경 100px의 구체를 그립니다.
Reference: sphere();

5. translate(100,100,100);



x, y, z 축 방향 각각에 100씩 도형을 그리는 기준의 위치를 ​​어긋나게 한다.
Reference: translate();

6. rotate(PI/4);



π/4(45도)만 도형을 그리는 기준의 방향을 어긋나게 한다. (z축 방향)
  • rotateX(PI/4); : X축 방향으로 이동한다.
  • rotateY(PI/4); : Y축 방향으로 이동한다.
  • rotateZ(PI/4); : Z축 방향으로 어긋난다.

  • 라디안을 실수치로 건네주는 형태가 되기 때문에, 만약 도수법으로 건네주고 싶은 경우는, radians(); 를 사용하면 된다.
    예) rotateX(radians(45));
    Reference: rotate();

    7. 카메라(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);


  • eyeX, eyeY, eyeZ
    카메라 위치의 좌표를 입력합니다.
  • centerX, centerY, centerZ
    화면의 중심 위치 (이 경우 기준점을 중앙으로 만들려면 모두 0으로 설정)
  • upX, upY, upZ
    카메라 방향 (기본적으로 0.0/1.0/-1.0 중 하나를 입력)

  • Reference: camera();

    8. lights();



    기준 위치에 기준 방향으로 조명을 비추십시오.
    보다 세세한 라이트의 설정을 할 경우, 다음의 코드를 이용한다.


    코드
    의미


    ambientLight();
    주변 광원

    directionalLight();
    평행 광원

    pointLight();
    점 광원

    spotLight();
    스포트라이트

    noLights();
    빛 없음


    Reference: lights();

    9. 오리지널 도형(Custom 3D Shape)



    주로 사용하는 코드는 다음의 3개이다.
  • beginShape();도형 정의를 시작할 때 작성하는 코드.
  • endShape();도형의 정의를 마칠 때 쓰는 코드.
  • vertex();도형의 요소를 작성하는 코드.

  • Reference: beginShape(); , endShape(); , vertex();

    예를 들어 3D 공간에 사각형을 그릴 때는 다음과 같이 그릴 수 있습니다.

    >> 샘플 코드(customShape.pde)

    customShape.pde
    void setup(){
      //settings
      size(500,500,P3D);  
      translate(250,250,0);
      rotateX(radians(45));
      rotateZ(radians(20));
    
      // writing custom shape
      beginShape();
      vertex(10, 10, 0);
      vertex(100,  10, 0);  
      vertex(100,  100, 0);
      vertex(10,  100, 0);
      vertex(10, 10, 0);
      endShape();
    }
    

    >>출력 결과(customShape.pde)


    >>설명(customShape.pde)vertex(); 에서 각 좌표를 차례로 추적하고 도형을 그립니다.
    출력에서 입체적인 시점으로 되어 있는 것은, 기준점의 각도를 rotateX();rotateZ(); 로 바꾸고 있기 때문.



    10. ortho();



    원근감이 없는 입체로 한다.

    Reference: ortho();

    >> 샘플 코드(ortho.pde)

    ortho.pde
    void setup(){
      //settings
      size(500,500,P3D);
      translate(250,250,0);
      rotateX(radians(45));
    
      //changing to ortho setting
      ortho();  
    
      // making the box object
      box(100,100,100);
    }
    

    >>출력 결과(ortho.pde)


    Tips : OPENGL에서 고속/고정밀도로 그리기



    OPENGL은 빠르고 고정밀도로 3D 공간을 표현할 수 있는 라이브러리이다.

    할 일
    - import processing.opengl.*; 에서 라이브러리 가져오기
    - size(500,500,OPENGL); 에서 P3D 대신 OPENGL

    >> 샘플 코드(OPENGL.pde)

    OPENGL.pde
    //importing the library
    import processing.opengl.*;
    
    void setup(){
      //settings - sets to OPENGL in size();
      size(500,500,OPENGL);
      translate(250,250,0);
      rotateX(radians(45));
    
      // making the box object
      box(100,100,100);
    }
    

    >>출력 결과(OPENGL.pde)

    좋은 웹페이지 즐겨찾기