폴더 경로 UI 사용하기

프로퍼티에서 폴더 경로를 선택할 수 있는 UI 가 있다.

예를 들어 siControlFolder, siControlFilePath, siControlNumber, siControlBoolean 같은 것인데, 특히 siControlFolder 는 파일을 저장하거나 불러올 경로 같은 것을 선택할 수 있도록 하는 UI 다.

siPPGControlType
원본 위치 <http://download.autodesk.com/global/docs/softimage2013/en_us/sdkguide/si_om/siPPGControlType.html>

파라미터는 AddParameter3 메소드로 siString 타입으로 추가해야 하며,PPGLayout 을 설정할 때 siControlFolder 로 지정해주면 siString 이 siControlFolder 로 변환 되어 사용할 수 있는 것이다.AddParameter3 인 것에 주의 해야한다. AddParameter, 2 에선 안된다.


아래는 J스크립트인 경우의 예제이다.

// Set up the underlying parameters
var oPSet = Application.ActiveSceneRoot.AddProperty( “CustomProperty”, false, “Demo” );

oPSet.AddParameter3( “FileDemo”, siString );
oPSet.AddParameter3( “NumberDemo”, siDouble );
oPSet.AddParameter3( “Mute”, siBool );

// Set up the PPGItems on the layout
var oPPGLayout = oPSet.PPGLayout;
var oParamStr = oPPGLayout.AddItem( “FileDemo”, “FileDemo”, siControlFilePath );
var oParamDbl = oPPGLayout.AddItem( “NumberDemo”, “NumberDemo”, siControlNumber );
var oParamBoo = oPPGLayout.AddItem( “Mute”, “Mute”, siControlBoolean );

This is what the property page would look like at this point:


원본 위치 <http://download.autodesk.com/global/docs/softimage2013/en_us/sdkguide/files/cus_ppg_SettingControlAttributes.htm>


Self PPG의 데이터 가져오기

Custom Property 에서 함수 구현 중 자신의 Property 에 등록된 변수의 값을 빨리 가져오는 방법이 있다.

바로 Self. 이 아닌 PPG. 이다.

def CnD_ExportClips_DefineLayout( in_ctxt ):

oLayout = in_ctxt.Source

oLayout.Clear()

oLayout.AddItem(“cfpSavePath”, u”저장 경로”, C.siControlFolder )

oLayout.AddButton(“btnOK”, u”저장”)

return true

 
 

def CnD_ExportClips_btnOK_OnClicked( ):

Application.LogMessage(“CnD_ExportClips_btnOK_OnClicked called”,C.siVerbose)

log( PPG.cfpSavePath )

 
 

위의 예제에서 PPG.cfpSavePath 를 사용해서 PPG안의 데이터를 쉽게 가져올 수 있었다.

2012, 2013 혼용 import 정의 하기

2013부터 import 형식이 아래처럼 적용된다.

2012에서는 si()을 인식 못하기 때문에 때문에 아래처럼 Version( )을 이용해서 버전을 얻어오고, 버전에 따라 import 형식을 적용해줬다. 2012도 사용가능한 플러그인을 만들고 싶다면 참고 해야한다.

Light 밝기의 변화 – Quad Decay

Sitoa 가 2.xx 전후로 Light 의 밝기 체계가 바꼈다.
예전에 Light Intensity 1이면 굉장히 밝았는데 이제는 그러지 않다.
그이유는 기본적으로 선택되어있는 Decay 가 변경되서 그렇다. 이것은 ILM 이나 Weta의 경험을 따라하는 것 같다.

 

Phong재질일 때는 Light 가 제대로 안먹혀서 Intensity 1에서도 밝지만 Standard 셰이더 일 때는 매우 어둡다.
Decay 를 Constant 로 바꾸면 되지만, 최대한 Quad Decay 를 사용하는 것이 실제 물리적인 빛 감쇠 현상과 최대한 가깝고 Arnold 상에선 더 빠르다고 하다.

 

위의 이미지처럼 Intensity 를 100으로 올려야 저 정도 이다.

Sin 함수 응용(Point 개수로 길이 제어가능)

Point ID 값을 Sin 함수 응용했다. 기존해보던 것과 다른 것은 포인트 개수가 많아 질수록 폭이 길이가 길어진다는 것이다. (이전에 했던 것은 이미 폭이 정해진 것이다.)

 

 
 

 
 

높이 값의 Modulo 노드 응용

포인트 ID 값을 Modulo 노드를 이용해 반복적인 계단 현상을 만드는 것이다.

 
 

파티클 일렬로 늘어놓기

 포인트 ID에 간격 값을 곱해줌으로써 포인트를 일렬로 정렬할 수 있다.

겹치는 파티클 삭제 – 간편방법

이전에 겹치는 파티클 삭제하기(http://cgndev.com/?p=396) 것보다 더 간편한 방법이다.

1 – 포인트 ID 순서로 스트랜드 생성

  • 이미 만들어진 파티클에서 파티클 ID 순서대로 스트렌드를 만드는 것이다.

모델의 Mixer 탐색하기

모델의 믹서를 탐색하는 예제이다. 이 정보로 믹서 복사하는 것을 좀 더 수월하게 할 수 있겠군…

스트렌트에 카메라 프로젝션 매핑

지인의 질문으로 멘탈레이에서 해봤으나 직접적인, 그러니까 1차원적인 방법으로 스트렌트에 카메라 프로젝션 매핑이 어려웠다.
아놀드에서는 쉽게 된다. 그런데 이런 프로젝션이 Freeze 가 된다면 더욱 좋겠지만 이것은 안될 것이다. 아마 스트렌드가 카메라 프로젝션 됐을 때의 Color 를 기억하게 하려면, 스트렌트를 수많은 세그먼트로 나누고 세그먼트의 카라를 직접 정의해줘야 할 것이다.

Cross Product 를 활용한 충돌 회피

파티클 혹은 인스턴스 기반의 군중에 있어서 가장 필요한 것은 아무래도 충돌을 피하는게 아닐까 싶다.

위의 영상은 벡터의 외적을 이용해서 출동을 피하도록 구현한 영상이다.

서로간의 Velocity 값을 외적을 이용해서 반대 방향으로 밀어 내도록 작업하였다.

그리고 군중에 중요한 것은 정해진 길만 잘 가는 것이 아닌가 생각된다.

정해진 길을 가는 건은 위의 영상 기간 때 보다는 더욱 간편화가 되었지만 맥락은 비슷하다.

Mesh 위에서만 다닐 수 있도록 Center of Mass 를 이용해서 구현했다.

Naiad Tutorial – Quick Start

나이아드(Naiad) 튜토리얼 – 아주 빨리 체험하기입니다.
프로그램 설치 후 따라서 해보시면 기본적인 시뮬레이션을 할 수 있을거에요.

댓글 또는 이메일로 질문 받습니다.

RGB 채널 만들기

Pass 기능에 있는 RGB Matte 를 이용한다면 자동으로 만들어 주기 때문에 이 포스트가 관련 없겠지만,
렌더트리에서 채널에 RGB Matte 등과 같이 커스텀 채널을 만들어 준다면 아래와 같은 일이 꼭 필요 할 것이다.

공부가 덜 되서 Store with Ray Type 에 Primary 로 했을 때와 Any Secondary 로 했을 때 어떤 차이가 있는 지 확실히 모르겠지만, 아래의 그림처럼 두개의 결과는 다르다.

Any Secondary 로 하면 제대로 안나오고 Primary 로 하면 위의 RGB 등등의 원하는 색이 잘 나온다.

Phong 재질 사용의 문제점

Skydome light 를 사용하면 약간의 노이즈가 보이긴 한다.
이것은 눈 감아 줄 문제이지만, Phong 재질을 사용한다면 심각해진다.
특히 바닥에서 올라오는 색(포톤)을 표현하기 위해서는 아놀드 셰이더인 Standard 를 쓰는 것이 좋다.

바닥을 Phong 으로 하게 되면 위에 이미지 처럼 포톤이 올라와 스피어의 바닥이 하얗게 되고, 위에 그림자가 생성되게 된다. 이것이 당연 논리겠지만, 이 Phong 을 쓰면 노이즈가 심각하게 생긴다는게 문제라는 것이다.

아래는 바닥을 Standard 로 한 것이다. 스피어의 색을 살리면서도 바닥 색을 자연스럽게 올리고 있다.
즉, Arnold 렌더러에서는 전용 셰이더나 호환 셰이더만 쓰는 것이 좋다.