scene내에 light는 여러개인데 light shader는 1개일때가 있다. 만약 shadow map이 생성된다면 attached 된 light만큼 shadow map이 생성되는데 문제는 reuse 할 때 file name을 지정 할 수 없다는 것이다.
1. 먼저 light shape node에 string type의 new attr을 추가한다.(여기에서는 'dsh')
2. 추가된 attr에 현재 light shape의 name을 넣는다.(ex, 'keyLightShape.dsh')
3. slim에서 shadow map에서 frequency 속성은 never, file 속성은 아래의 tcl code를 입력한다.
scenes/renderman/rmantex/shd/hair_v2_w1.[mel "getAttr $OBJNAME.dsh"].$F4.tex
p.s.
hair_v2_w1은 display name인데 이것도 $OBJNAME처럼 예약어가 있을듯 한데 아직 못 찾았음. path도...
Thursday, September 24, 2009
Wednesday, September 23, 2009
Rendering Maya Hair
Maya hair를 custom hair shader로 rendering하기 위해서는
1. custom hair shader를 slim의 ensemble shader에 연결한다.
2. ensemble shader의 casts shadows는 Shade로 변경(Shade가 아닐경우 shadow가 걸리지 않음)
3. ensemble shader를 pfxHairShape node에 연결(slim에서 pick objects로 연결되어 있는지 꼭 확인)
1. custom hair shader를 slim의 ensemble shader에 연결한다.
2. ensemble shader의 casts shadows는 Shade로 변경(Shade가 아닐경우 shadow가 걸리지 않음)
3. ensemble shader를 pfxHairShape node에 연결(slim에서 pick objects로 연결되어 있는지 꼭 확인)
no Shadow
with Shadow
Sunday, September 20, 2009
Monday, September 14, 2009
문명의 붕괴
퓰리처상 수상 작가 재레드 다이아몬드가 문명 붕괴 과정을 통해 본 지구 문명의 미래!
환경훼손, 무분별한 개발, 약탈, 전쟁은 우리의 지구뿐만 아니라 인간의 생존 자체를 끊임없이 위협하고 있다. 저자는 과거의 위대한 문명의 붕괴 과정과 현대 사회의 위기를 분석하면서 현대 문명이 몰락할 것인지, 위기를 극복하고 살아남을 것인지 질문을 던진다.
마야 문명, 남태평양의 이스터 섬, 아시아의 앙코르와트 등처럼 단순한 쇠락이 아니라 완전히 몰락해버린 사회들을 주로 비교 분석하면서 환경 파괴, 기후 변화, 이웃 나라와의 적대적 관계, 우방의 협력 감소, 사회 문제에 대한 그 구성원의 위기 대처 능력 저하를 문명 붕괴의 원인으로 지적한다.
과거 문명의 붕괴과정 뿐만 아니라 가혹한 환경문제를 극복한 아이슬란드와 뉴기니의 고원지대, 산림 파괴로 인한 위기를 극복한 일본의 성공사례를 통해서 독자들에게 희망을 주는 것을 잊지 않으며, 인간이 자멸을 피하고 공존할 수 있는 방법을 제시한다.
http://www.yes24.com/24/goods/1806300
Thursday, September 10, 2009
Camera I/O script 사용시 문제점
http://daehwanj.blogspot.com/2011/02/exporting-3ds-max-camera-to-maya.html 과 관련된 내용.
Camera I/O는 3dsmax에서 maya로 export camera 할 때 요긴하게 쓰이는 script이다.
대체적으로 잘 작동하지만 가끔 maya에서 import가 제대로 되지 않을때가 있다.(exporting는 정상이라는 얘기)
export된 camera 값은 아래와 같은 ascii이다.
cio sc20_Cam_(172-219) 24 1280 720 1.77778 1.0 0.792126 0.445571 0.01 y MX
172 -1286.4 -680.051 -3179.01 -1214.4 -669.759 -3110.38 -1294.04 -580.582 -3185.91 20.7297 51.774 30.5369
173 -1290.07 -683.29 -3183.78 -1220.67 -672.704 -3112.58 -1297.72 -583.852 -3191.12 20.7297 51.774 30.5369
대충 보면 첫째줄은 camera의 기본적인 속성값이다. camera name, resolusion, raio, aperture
두번째줄부터 key 값이 들어간다. 첫번째 칼럼은 frame이고 이후 9개의 float number는 transform값
마지막 3개의 float number는 keying된 lens 정보.
20.7297 == Focal Length
51.774 == AOV
30.5369 == ??
값이 제대로 안들어가는 부분은 aperture 값! max와 비교할때 camera가 이상하다 싶으면 항상 aperture 값이 안들어가있다. 위의 data값이라면
0.792126 == Horizontal Film Aperture
0.445571 == Vertical Film Aperture
이 값을 입력해주면 된다.
만약 exporting된 camera가 animating된 Focal Length을 가지고 있는데 key가 안 들어가 있다면 원래 data 값으로 매 frame 연결해줘야 한다.
Camera I/O는 3dsmax에서 maya로 export camera 할 때 요긴하게 쓰이는 script이다.
대체적으로 잘 작동하지만 가끔 maya에서 import가 제대로 되지 않을때가 있다.(exporting는 정상이라는 얘기)
export된 camera 값은 아래와 같은 ascii이다.
cio sc20_Cam_(172-219) 24 1280 720 1.77778 1.0 0.792126 0.445571 0.01 y MX
172 -1286.4 -680.051 -3179.01 -1214.4 -669.759 -3110.38 -1294.04 -580.582 -3185.91 20.7297 51.774 30.5369
173 -1290.07 -683.29 -3183.78 -1220.67 -672.704 -3112.58 -1297.72 -583.852 -3191.12 20.7297 51.774 30.5369
대충 보면 첫째줄은 camera의 기본적인 속성값이다. camera name, resolusion, raio, aperture
두번째줄부터 key 값이 들어간다. 첫번째 칼럼은 frame이고 이후 9개의 float number는 transform값
마지막 3개의 float number는 keying된 lens 정보.
20.7297 == Focal Length
51.774 == AOV
30.5369 == ??
값이 제대로 안들어가는 부분은 aperture 값! max와 비교할때 camera가 이상하다 싶으면 항상 aperture 값이 안들어가있다. 위의 data값이라면
0.792126 == Horizontal Film Aperture
0.445571 == Vertical Film Aperture
이 값을 입력해주면 된다.
만약 exporting된 camera가 animating된 Focal Length을 가지고 있는데 key가 안 들어가 있다면 원래 data 값으로 매 frame 연결해줘야 한다.
Explosion for Fluid Simulation
제일 자신 없는 Fluid Simulation.
이번 프로젝트가 사막 전투씬이라 폭파 장면이 많다. asset용으로 만든 폭파
Particle Instancer를 이용한 Flying Bullets
날아가는 총알 작업이 많아서 library(asset?)으로 만들어서 필요할 때마다 import중이다.
위쪽 동영상에서 plane이 emitter, box는 임의적인 방향성을 주기위한 dummy.
emitter는 box에 aim contrain 되어 있다. random한 position은 expression으로 해결.
뭐.. 나름 만족하네.
Tuesday, September 8, 2009
Mounting a Network Folder
$ sudo mount -t cifs //123.123.123.123/tmp /tmp -o username=id
Password: (enter pw)
Password: (enter pw)
Monday, September 7, 2009
Node Name 변경으로 인한 Warning
particle 작업 할때 grouping을 위해 emitter node나 particle node의 name을 변경하는 경우가 많다. 이럴 경우에 다음과 같은 warning, error이 발생할 수 있다.
// Warning: No items found in: OptionMenu //
// Error: No object matches name: emitter1.emitterType //
// Error: No object matches name: emitter1.cycleEmission //
// Error: No object matches name: emitter1.emitterType //
// Error: No object matches name: emitter1.inheritOpacity //
// Error: No object matches name: particleShape1.lifespanMode //
// Error: No object matches name: particleShape1.particleRenderType ///
warning이나 error만 발생 할 뿐 지금까지는 작업 하는데 전혀 문제가 되지 않았다.
그래도 신경 쓰인다면 attributes editor window에서 emitter node나 particleShape node의 해당 값을 한번씩 toggle해주면 문제 해결.
// Warning: No items found in: OptionMenu //
// Error: No object matches name: emitter1.emitterType //
// Error: No object matches name: emitter1.cycleEmission //
// Error: No object matches name: emitter1.emitterType //
// Error: No object matches name: emitter1.inheritOpacity //
// Error: No object matches name: particleShape1.lifespanMode //
// Error: No object matches name: particleShape1.particleRenderType ///
warning이나 error만 발생 할 뿐 지금까지는 작업 하는데 전혀 문제가 되지 않았다.
그래도 신경 쓰인다면 attributes editor window에서 emitter node나 particleShape node의 해당 값을 한번씩 toggle해주면 문제 해결.
Velocity 방향으로 Instancer Object 고정시키기
자꾸 실수하는 내용.
particle에 instancer object를 연결 했을때 particle의 진행 방향으로 object를 rotation하기 위해서는
1. instancer object의 정면은 X축으로 설정하고 freeze transform
2. instrancer option은 아래와 같이 설정한다.
주로 화살등에 응용 할 수 있겠다.
particle에 instancer object를 연결 했을때 particle의 진행 방향으로 object를 rotation하기 위해서는
1. instancer object의 정면은 X축으로 설정하고 freeze transform
2. instrancer option은 아래와 같이 설정한다.
주로 화살등에 응용 할 수 있겠다.
Fluid Disk Cache의 저장
fluid의 disk cache는 2가지 선택이 있다. 하나는 one file, 다른 하나는 one file per frame
one file이면 하나의 file에 저장되며, one file per frame은 frame당 cache가 저장된다.
per frame은 현재 project/data 에 바로 저장되는 반면 one file은 tempotory directory에 저장 되어 있다가 save scene을 해야지만 project/data에 copy된다. save scene을 하기 전에는 fluidDiskCache node의 file attr에도 cache 위치가 명시되지 않는다.(하지만 내부적으로는 temp directory의 .mcfp로 연결되어 있다.)
one file이면 하나의 file에 저장되며, one file per frame은 frame당 cache가 저장된다.
per frame은 현재 project/data 에 바로 저장되는 반면 one file은 tempotory directory에 저장 되어 있다가 save scene을 해야지만 project/data에 copy된다. save scene을 하기 전에는 fluidDiskCache node의 file attr에도 cache 위치가 명시되지 않는다.(하지만 내부적으로는 temp directory의 .mcfp로 연결되어 있다.)
Flash Player for 64 bit Linux
그동한 32bit flash player를 nswrapper로 사용해왔는데 이미 작년에 64bit용 flash player가 공개 되었더라.
공개된 url이 adobe.com인데 정식으로 공개 된 것인지는 모르겠음
아래 경로에서 다운받아 /usr/lib/mozilla/plugins 에 복사 후 firefox를 재시작
http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.d20.7.linux-x86_64.so.tar.gz
관련 기사
http://blogs.adobe.com/penguin.swf/2008/11/now_supporting_16_exabytes.html
공개된 url이 adobe.com인데 정식으로 공개 된 것인지는 모르겠음
아래 경로에서 다운받아 /usr/lib/mozilla/plugins 에 복사 후 firefox를 재시작
http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.d20.7.linux-x86_64.so.tar.gz
관련 기사
http://blogs.adobe.com/penguin.swf/2008/11/now_supporting_16_exabytes.html
Linux에서 Maya 실행시 libirc.so error
Linux에서 아무런 이상없이 실행되던 Maya가 갑작스레 아래와 같은 error를 내뱉으며 실행되지 않았다.
$ ./maya.bin
./maya.bin: error while loading shared libraries: libirc.so: cannot open shared object file: No such file or directory
이것이 뭔 error인가해서 구글링 해봤더니 잘못된 파일로 실행해서 그런것이다...라는 허무한 답변...
maya.bin이 아니라 ./Maya2008(2008버전이라면 이게 맞을것이고 8.5라면 ./Maya8.5)을 실행해야 한단다...쩝
$ ./Maya2008 (if maya 2008)
$ ./Maya8.5 (if maya 8.5)
또는 아래와 같은 error가 발생한다면
$ ./Maya2008
/usr/autodesk/maya2008-x64/bin/maya.bin: error while loading shared libraries: /usr/autodesk/maya2008-x64/lib/libirc.so: cannot restore segment prot after reloc: Permission denied
System -> Administrator -> Security Level and Firewall -> SELinux에서 Enforcing을 Permissive로 바꿔준다.
$ ./maya.bin
./maya.bin: error while loading shared libraries: libirc.so: cannot open shared object file: No such file or directory
이것이 뭔 error인가해서 구글링 해봤더니 잘못된 파일로 실행해서 그런것이다...라는 허무한 답변...
maya.bin이 아니라 ./Maya2008(2008버전이라면 이게 맞을것이고 8.5라면 ./Maya8.5)을 실행해야 한단다...쩝
$ ./Maya2008 (if maya 2008)
$ ./Maya8.5 (if maya 8.5)
또는 아래와 같은 error가 발생한다면
$ ./Maya2008
/usr/autodesk/maya2008-x64/bin/maya.bin: error while loading shared libraries: /usr/autodesk/maya2008-x64/lib/libirc.so: cannot restore segment prot after reloc: Permission denied
System -> Administrator -> Security Level and Firewall -> SELinux에서 Enforcing을 Permissive로 바꿔준다.
Sunday, September 6, 2009
Repository
1. CentOS Repository
http://centos.karan.org/
2. DAG RPM Repository
http://dag.wieers.com/rpm/FAQ.php#B
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge(위의 link와 같은 내용)
http://centos.karan.org/
2. DAG RPM Repository
http://dag.wieers.com/rpm/FAQ.php#B
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge(위의 link와 같은 내용)
Wednesday, September 2, 2009
Shadow Bias
hair 작업하는데 왠지 shadow가 들어가긴 한 것 같은데 제대로 안들어간 기분이 들었다. 다른 각도에서 보니 역시나 -_-
간단히 light shadows의 bias 값을 1로 변경해서 해결
근데 얼굴이 그림자때문에 더 어두워졌다. 옳은 방법이 아닌 듯...
간단히 light shadows의 bias 값을 1로 변경해서 해결
근데 얼굴이 그림자때문에 더 어두워졌다. 옳은 방법이 아닌 듯...
Windows System과 Linux System간의 Path 문제
일단 아래의 code를 보자.
>>> import os
>>> os.path.join('/show', 'foo')
/show/foo
위 code는 unix system에서 실행 했을때의 출력 값이다.
다음은 windows system에서의 출력값이다.
>>> import os
>>> os.path.join('/show', 'foo')
/show\foo
unix system에서와 다르게 출력되는 걸 알수 있다. 이로인해 prman.exe에서는 error를 출력하곤 rendering을 하지 않는다.
회사 내부에서 windows와 linux를 함께 사용하여 RenderMan으로 작업 시 문제가 발생할 수 있을것이다. 이 문제의 해결 방법에 대해 딱히 찾아보진 않았지만 다음과 같이 수정하면 해결 가능한것 같다.
>>> os.path.join('/show/', 'foo')
/show/foo
joint 하려는 path가 /로 끝나도록 하면 된다. 이건 unix던지, windows던지 상관없이 작동하며 동일한 결과를 보인다.
>>> import os
>>> os.path.join('/show', 'foo')
/show/foo
위 code는 unix system에서 실행 했을때의 출력 값이다.
다음은 windows system에서의 출력값이다.
>>> import os
>>> os.path.join('/show', 'foo')
/show\foo
unix system에서와 다르게 출력되는 걸 알수 있다. 이로인해 prman.exe에서는 error를 출력하곤 rendering을 하지 않는다.
회사 내부에서 windows와 linux를 함께 사용하여 RenderMan으로 작업 시 문제가 발생할 수 있을것이다. 이 문제의 해결 방법에 대해 딱히 찾아보진 않았지만 다음과 같이 수정하면 해결 가능한것 같다.
>>> os.path.join('/show/', 'foo')
/show/foo
joint 하려는 path가 /로 끝나도록 하면 된다. 이건 unix던지, windows던지 상관없이 작동하며 동일한 결과를 보인다.
Subscribe to:
Posts (Atom)