-
오브젝트 텍스쳐 변경 & 오브젝트 페이스(면)번호 알아내기웹프로그래밍/LSL(세컨드라이프) 2013. 7. 18. 23:39반응형
세컨드라이프에서 만들기를 하면서
오브젝트에 여러가지 상황에 맞게 텍스쳐를 입히게 된다.
이번같은 경우
댄스클럽 벽에 사진을 크게 걸어 놓았는데
그 사진을
시간이 지나면 다른사진으로 바뀌도록 해봤다.
저 사진판은 기본오브젝트인 Box 오브젝트를 사용했다.
Box는 육면체다.
Box를 크기를 조정해서 얇은 액자같이 만든것이다.
그러므로
사진도 육면에 다 등록할 필요없이
사진이 보여져야 할 한면에만 사진(텍스쳐)를 보여주면 된다.
기본적으로,
"select face"를 체크하지 않고
오브젝트에 텍스쳐를 등록하면 육면에 다 등록이 된다.
그래서 만들기 작업시에 한면을 선택한뒤 그 면에만 텍스쳐를 입히게 되는데,
스크립트상에서 그면의 텍스쳐를 바꿔주려면 그 면의 번호를 알아야 한다.(1~6)
스크립팅을 할때 이렇게 면의 번호를 알아내는 방법은 다음과 같다.
- 뷰어에서 Advenced 와 Develop 을 활성화 시킨다.
- world > show > Advenced menu 체크
- Advenced > Show Develop menu 체크 - 빌드창에서 Select face 체크
- 알고자 하는 오브젝트의 면을 클릭
- ctrl + art + shift + T 클릭
- 시스템 메세지로 면번호가 보여진다.
[면번호는 1 이고, 픽셀사이즈는 1024x512 라고 나온다]
[오브젝트의 텍스쳐를 지정하는 스크립트]
llSetTexture( 텍스쳐이름(또는 UUID), 면번호 );
[여러장의 텍스쳐를 등록해 놓고 사용하는 방법]
1. 오브젝트 내에 텍스쳐들을 삽입시켜 놓은다음
integer tNum = llGetInventoryNumber(INVENTORY_TEXTURE);
//오브젝트에 포함된 텍스쳐의 갯수를 tNum에 담음.
llSetTexture( llGetInventoryName(INVENTORY_TEXTURE, 텍스쳐번호), 면번호);
//지정한 텍스쳐 번호의 텍스쳐를, 면번호 면에 입힌다.
//텍스쳐번호 : 0 ~ (tNum-1)
위의 스크립트를
timer() 이벤트와 touch() 이벤트에 적절히 심어서 사용하면 된다.
반응형'웹프로그래밍 > LSL(세컨드라이프)' 카테고리의 다른 글
기본적인 포즈볼 스크립트 (0) 2015.07.19 오픈심(Open Simulator) 설치하기 (0) 2015.07.18 파티클 스크립트(펌) (0) 2010.02.07 파티클 소스 (0) 2009.02.25 세컨드라이프 스크립트 자동 업그레이드(펌) (0) 2009.01.27 - 뷰어에서 Advenced 와 Develop 을 활성화 시킨다.