ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오브젝트 텍스쳐 변경 & 오브젝트 페이스(면)번호 알아내기
    웹프로그래밍/LSL(세컨드라이프) 2013. 7. 18. 23:39
    반응형

    세컨드라이프에서 만들기를 하면서

    오브젝트에 여러가지 상황에 맞게 텍스쳐를 입히게 된다.


    이번같은 경우

    댄스클럽 벽에 사진을 크게 걸어 놓았는데



    그 사진을

    시간이 지나면 다른사진으로 바뀌도록 해봤다.


    저 사진판은 기본오브젝트인 Box 오브젝트를 사용했다.

    Box는 육면체다.

    Box를 크기를 조정해서 얇은 액자같이 만든것이다.

    그러므로

    사진도 육면에 다 등록할 필요없이

    사진이 보여져야 할 한면에만 사진(텍스쳐)를 보여주면 된다.


    기본적으로,

    "select face"를 체크하지 않고

    오브젝트에 텍스쳐를 등록하면 육면에 다 등록이 된다.

    그래서 만들기 작업시에 한면을 선택한뒤 그 면에만 텍스쳐를 입히게 되는데,


    스크립트상에서 그면의 텍스쳐를 바꿔주려면 그 면의 번호를 알아야 한다.(1~6)


    스크립팅을 할때 이렇게 면의 번호를 알아내는 방법은 다음과 같다.


    1. 뷰어에서 Advenced 와 Develop 을 활성화 시킨다.
      - world > show > Advenced menu 체크
      - Advenced > Show Develop menu 체크

    2. 빌드창에서 Select face 체크
    3. 알고자 하는 오브젝트의 면을 클릭
    4. ctrl + art + shift + T 클릭
    5. 시스템 메세지로 면번호가 보여진다.



    [면번호는 1 이고, 픽셀사이즈는 1024x512 라고 나온다]


    [오브젝트의 텍스쳐를 지정하는 스크립트]

    llSetTexture( 텍스쳐이름(또는 UUID), 면번호 );


    [여러장의 텍스쳐를 등록해 놓고 사용하는 방법]

    1. 오브젝트 내에 텍스쳐들을 삽입시켜 놓은다음

       integer tNum = llGetInventoryNumber(INVENTORY_TEXTURE);

       //오브젝트에 포함된 텍스쳐의 갯수를 tNum에 담음.


       llSetTexture( llGetInventoryName(INVENTORY_TEXTURE, 텍스쳐번호), 면번호);

       //지정한 텍스쳐 번호의 텍스쳐를, 면번호 면에 입힌다.

       //텍스쳐번호 : 0 ~ (tNum-1)


    위의 스크립트를

    timer() 이벤트와 touch() 이벤트에 적절히 심어서 사용하면 된다.



    반응형

    댓글

Designed by Tistory.