2007년 11월 27일 화요일

Motion Factor

Motion Factor is meaningful only if Motion Blur is enabled.
A low shading rate is wasted on quickly moving objects since the detail will be blured out. Setting mtion factor allows you to tradeoff between the amount of blur on an object and the shading rate. A larger motion factor will result in more coarsely sampled shaders on fast moving objects and consequently decreases rendering time.

mk_env PreView for RAT

마야에서 RAT을 사용하다보면 Environment light의 방향을 돌려야할때가 쪼~금 불편하다.
해서 env light를 프리뷰하기위해서 만들어봤다.
넙스 스피어에 env texture를 맵으로 넣어서 프리뷰를 하고 그 방향을 mtor coordsys로 콘트롤하는 방식....

import maya.cmds as cmds
import maya.mel as mm

def mk_env():
#create Sphere for preview
preview_sphere = cmds.sphere(ch=True, o=True, po=0, ax=[0,1,0], nsp=4)
attr_ctrl = ['castsShadows', 'receiveShadows', 'motionBlur', 'primaryVisibility', 'smoothShading', 'visibleInReflections', 'visibleInRefractions']
for i in attr_ctrl:
cmds.setAttr(preview_sphere[0] + '.' + i, 0)

cmds.setAttr(preview_sphere[0] + '.scaleX', -1)
cmds.reverseSurface(preview_sphere[0], ch=True, rpo=True, d=3)

cmds.delete(preview_sphere[0], ch=True)
preview_name = cmds.rename(preview_sphere[0], 'mtor_env_preview')

shader_name = cmds.shadingNode('lambert', asShader=True)
tex_node = cmds.shadingNode('file', asTexture=True)
SG_name = cmds.sets(n=shader_name + 'SG', r=True, nss=True, em=True)
cmds.connectAttr(shader_name + '.outColor', SG_name + '.surfaceShader', f=True)
cmds.connectAttr(tex_node + '.outColor', shader_name + '.color', f=True)

cmds.sets(preview_name, fe=SG_name)

#create MTOR CoordSys
mk_mtor_coordsys = mm.eval("MtorCreateCoordSys")
coordSysName = cmds.ls(dag=True, sl=True)
cmds.setAttr(coordSysName[1] + '.displayMode', 1)
cmds.setAttr(coordSysName[0] + '.rotateX', -90)
cmds.setAttr(coordSysName[0] + '.scale', 2.5, 2.5, 2.5)
cmds.rename(coordSysName[0], 'mtor_env')
mtor_envName = cmds.ls(dag=True, sl=True)

cmds.parent(preview_name, mtor_envName[0])

cmds.addAttr(mtor_envName[0], ln='pre_view', at='bool', dv=1)
cmds.setAttr(mtor_envName[0] + '.pre_view', keyable=True)
cmds.connectAttr(mtor_envName[0] + '.pre_view', mtor_envName[0] + '|' + preview_name + '.visibility')
cmds.select(mtor_envName[0])

Maya8.5 python 사용

mel의 경우 scripts폴더에 파일이 있으면 마야가 실행되면서 읽어들여 mel에 있는 프로시져를 실행할수가 있다. 하지만 python의 경우 그냥 파일을 만들어 놓는다고 실행되지는 않는다.
userSetup.py파일을 만들어 사용하고자하는 py파일을 import해와서 def를 실행해야한다.

2007년 11월 19일 월요일

only shadow Rendering

RibBox
[if {$ELEMENTTYPE == "shadow"} {
return "Matte 1"
}]

Bonding Setting by Linux

/etc/modprobe.conf
alias bond0 bonding
추가

/etc/sysconfig/network-scripts
ifcfg-bond0 생성
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
GATEWAY=xxx.xxx.xxx.xxx
USERCTL=no
MTU=9000
TYPE=Ethernet

ifcfg-eth0 편집
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
MASTER=bound0
SLAVE=yes
USERCTL=no
TYPE=Ethernet
ifcfg-eth1 편집
DEVICE=eth1
...
...
...

/etc/sysconfig/network 편집
GATEWAYDEV= bond0 추가

Samba & NFS nobody share

/etc/samba/smb.conf
workgroup = vfx
server string = vfxpd
security = share
password server = None
guest ok = yes
guest account = nobody
[3D_work]
comment = /3D_work
path = /3D_work
writeable = yes
create mask = 0666
directory mask = 0777
public = yes

/etc/exports
/3D_work 192.168.0/255.255.0.0(rw,insecure,sync,all_squash,anonuid=99,anongid=99)

RAT_SCRIPT_PATHS 설정을 통한 slim library share

작업을 하다보면 slim template을 만들어서 추가하는 경우가 상당히 많다.
예전 같았으면 모든 사용자 local host에 복사를 했겠지만.... 정말 무식한 방법이다.

환경변수에 RAT_SCRIPT_PATHS를 추가하면,
이 path에 들어있는 랜더맨 설정 파일들을 읽어들여 옵션이 적용된다.
이 폴더에 들어있는 파일들만 관리를 하면 다른 모든 사용자들은 자동 업데이트가 되는 셈이다.

RenderMan을 인스톨하고 기본적으로 옵션을 수정하는 파일들,
alfred.ini, alfserver.ini, slim.ini 파일을 이 path에 생성한다.

ex. slim.ini
if {$pf(platform) == "windows"} {
set tSearchPath X:/System-Setting/rmsextensions/templates
} else {
set tSearchPath /3D_work/System-Setting/rmsextensions/templates
}
사용자의 플렛폼에 따라 path의 경로를 설정하였다.
.../templates 폴더에 *.slim 파일을 추가하여 slim template을 공유 할 수 있게 된다.

set paths [GetPref TemplateSearchPaths]
lappend paths $tSearchPath
SetPref TemplateSearchPaths $paths
기본 slim template path에 위에서 설정한 tSearchPaht를 추가

::Slim::RegisterLazyTemplates {
smoothstep.slim {
{ pixar,Smoothstep#0 float Smoothstep /Floats/Utility }
}
}
이런식으로 *.slim file을 등록한다.

ex. alfred.ini
SetPref metricsAddr {192.168.1.11}
set alfConfig(database) {}
set alfConfig(maitredHost) {192.168.1.11}
set alfConfig(doRemoteCmdFallback) 0
Maitre_D Server를 설정하며 Alfred를 공유한다. 만약 BatCave가 셋팅되어있다면 database에 등록을 하면된다.

alfserver.ini파일또한 같다.

Maya 최적화 Nvidia X11 수정

Centos5, RHEL5등에서 Maya Display error가 종종 발생한다.
이런 문제점들을 최적화하기 위해서 /etc/X11/xorg.conf를 수정.

Section "Extensions"
Option "Composite" "Disable"
EndSection

부분을 추가.

RenderManager v.8.0.rc2




Alfred를 기반으로한 Network Rendering Tool!

지금까지 랜더맨을 사용해오면서 필요로했던 툴을 python을 이용하여 만들었다.
2006년 3월 부터 tcl을 시작으로 script을 공부하여 지금까지 RenderManager v.8.0.rc2까지 버전업을 했으며, 앞으로도 계속 수정 보완해 나갈 계획이다.

Maya default render, mental ray
RenderMan prman, mtor, txmake, ptfilter, brickviewer
Shave and Hair Rib export 등을 지원한다.
WindowsXP, Linux Box system을 지원.
OSX도 지원은 가능하나 테스트는 해보지 않았음.

코끼리 테스트 PT자료용 - 영화제목은 아직...




한동안 쉬다가... 팀원들이 모여 후다닥 만들었다.
간만의 작업이라 재밌기는 하였으나... 역쉬 작업은 항상 힘들다.

2007년 11월 17일 토요일

[두사람이다]가인의 방


뭐 그저그런 작업중의 하나다.
특이한게 있다면... 천장의 피바다 같은것이 displacement shader 이다.
ㅋㅋㅋ 랜더맨 도큐먼트나 홈페이지에 보면 상항 등장하는 놈이다.
언젠가 나도 그런 쉐이더를 만들어보고 싶었었는데... 이번에 작업을 해봤다.
Displacement Shader의 불가능은 존재하지 않는다.
유져의 한계만 있을뿐....

[두사람이다]몬스터


국장님의 모험심을 한번더 느낄수 있었던 작업이다.
감독이 딱히 원하는것 같지도 않던데... 어찌나 하자고 그러시는지... 영화상에서 보면 별 의미는 없어보이자만... 작업한 사람의 입장에서보면 참 재밌는 작업이었다.

아마 국내 영화CG에서 scattering을 사용한 최초의 이미지가 아닐까 생각한다. ㅋㅋㅋ
그리고 랜더맨의 정말 강력함을 한번더 느낄수 있는 모션블러~~~~
오브젝트 트래킹을 정말정말 잘 맞춰준 형찬씨 덕에 모션블러가 실사와 거의 똑 같다.
최종 수정작업에서 얼굴을 조금더 들어서 한장 한장 보면 조금 틀려보이지만...
시퀀스로 보면 거의 느껴지지 않는다.

모션블러 짱~~~ 인 랜더맨을 신봉하며...

[두사람이다] 여귀


항상 힘들게 작업하기를 고집하시던 윤재훈 국장님의 고집으로 만든 여귀.
90%이상이 3D다.
물론 작업을 Full 3D로 되어있지만 합성을하면서 부분적으로 실사와 겹쳐있다.
극장에서 스크린으로 보면 정말 정말 트레킹이 작살이다.
ㅋㅋㅋ

R&D 캐릭터 Dave - Shading Test


NIG VFX-team원들이랑 R&D하면서 만들고 있었던 캐릭터 Dave.
올해초부터 시작을 했으니까... 거의 8개월동안 틈틈히 만들고 있던 놈이다.
아쉽게도 완성을 못 하고 팀원들이랑 헤어져서 아쉽지만... 언젠가는 다시 모여서 만들수 있기를 기대한다.
RenderMan Scattering,
근육시뮬레이션,
옷시뮬레이션,
얼굴표정... 등을 만들고 있던중이었다.
컨셉아티스트가 없어서 디자인을 할때 많이 힘들었지만.... 많은 의미와 내공을 가질수 있었던 작업이다.

shading technic
: wrap diffuse, cook torran specular, phong specular 등을 이용...
상용으로 나와있는 slim shader 기본 노드들은 전혀 사용하지 않았다.

[폭력써클]축구공...


왠지 작업할때 부터 느낌이 좋지 않았다.
왜 이놈의 공을 씨지로 하길 원할까? 소림축구도 아니고말이지....
아니나 다를까 본편작업때 빠졌다.
우리팀이 작업을 잘 못해서일까?
글쎄... 개인적인 생각으로 잘 붙은것 같은뎅...

[그해여름] 기차...


으~ 기차는 지겹도록 작업을 했었다.
ㅋㅋㅋ 사람들이 좋게 봐주는 것일까?
전에 어떤 드라마 제작관련 사람이 우리회사에 찾아와서 이컷을 어떻게 촬영했냐고 물어봤다.
그래서 아주 당연히 쓰리디로 만든거라고 했는데... 몰랐단다.
내심 기분이 좋기는 했지만... 왠지 떨떠름한 느낌이 들었다....

[그해여름] 1970년대 초반 서울역...



원래는 우리팀이 작업할 일이 아니었다.
아무생각없이 있다가 4일만에 만들었던 기억이 난다. 힘든작업이었지만.... 그때 처음 느꼈다. 이제 팀웍이 만들어져가고 있다는것을...
순식간에 후다다닦~~~

[리턴] 벌 테스트 작업


그냥 그저 그런 작업이었다

[그해여름]기차...


달려오는 기차...

[그해여름]기차 테스트 합성


작년에 개봉한 이병헌, 수애 주연의 [그해여름]
여러컷을 작업했지만 영화에 사용된컷은 달랑 두컷 뿐이었다.

rendermn.ini 설정

1. openexr 설정

/display/openexr/type half
/display/openexr/compression piz



2. 마이크로폴리곤 케쉬파일

/prman/hider/mpcachedir /mpcachedir
* 케쉬디렉토리 사용에 대한 권한설정이 중요하다.

RiAttribute - displacementbound

Attribute "displacementbound" "sphere" [1.00] "coordinatesystem" ["shader"]

Delayed ReadArchive - RibBox

Procedural "DelayedReadArchive" \["rib filename"\] \[[mattr "$OBJPATH.boundingBoxMinX" $f] [mattr "$OBJNAME.boundingBoxMaxX" $f] [mattr "$OBJNAME.boundingBoxMinY" $f] [mattr "$OBJNAME.boundingBoxMaxY" $f] [mattr "$OBJANME.boundingBoxMinZ" $f] [mattr "$OBJNAME.boundingBoxMaxZ" $f]\]

Polygon Displacement

displacement myDisp()
{
normal Nn = normalize(N);
vector Ndiff = Nn - normalize(Ng);
P += Nn*some_value;
. . .
N = normalize(calculatenormal(P)) + Ndiff;
}

ㅋㅋㅋㅋ

RibBox를 이용한 Conditional Evaluation

[Export Object for RibBox Attribute]

IfBegin "\$user:renderpass == 'shadow'"

Surface "null"

ElseIf "\$user:renderpass == 'beauty'"

Surface "rmarble"

Else Surface "plastic"

IfEnd

[Archive for RibBox Attribute]

Attribute "user" "string renderpass" "shadow"

ReadArchive "rib/filename.rib

[Attribute] relativeshadingrate


RenderMan Controls Reyes Shading Rate - 0.25RibBox AttachAttribute "shade" "relativeshadingrate" [float]Attach Object Shading rate = Reyes Shading Rate * [float]ex> 0.25 * 20 = 5 shading rate

Double-sided Shading

Pixar University 에서 봤던 물고기를 연상하며...

RibBox를 이용
Attribute "sides" "int doubleshaded" 1
Attribute "cull" "backfacing" 0

slBox UI

sample

slBox 사용 예제


젤리느낌을 표현

vector In = normalize(I);
normal Nn = normalize(N);

/* calculate reflection on outer displaced surface */
vector reflDir = normalize(reflect(In, Nn));
vector reflDirWorld = vtransform("world", reflDir);
color Crefl = environment("C:/rmantex/ratEnv.tex", reflDirWorld);
/* make reflection monochromatic and push up darks to make it flatter */
Crefl = pow(0.35 * comp(Crefl, 0) + 0.5 * comp(Crefl, 1) + 0.15 * comp(Crefl, 2), 0.3);
/* finally tint the reflection */
Crefl = reflTintColor * Crefl;

/* trace against the undisplaced torus and find the intersection point and normal */
point Phit;
normal Nhit;
float maxLen = 3.0;
float rayLen = maxLen;
color CDiffuse = color(0, 0, 0);
vector refrDir = normalize(refract(In, Nn, eta));
point traceP = P - 0.1 * refrDir;
gather("illuminance", traceP, refrDir, 0, 1, "hitsides", "front", "primitive:P", Phit, "primitive:N", Nhit, "ray:length", rayLen) {
CDiffuse = diffuse(normalize(Nhit));
} else {
/* incase we don't hit the front of the torus try hitting the back side.
this would happen if we essentially just go through water this is
why we set diffuse to black */
gather("illuminance", traceP, refrDir, 0, 1, "hitsides", "back", "primitive:P", Phit, "primitive:N", Nhit, "ray:length", rayLen) {
CDiffuse = color(0, 0, 0);
}
}
/* calculate depth tinting using Bier's law */
rayLen = max(0.0001, rayLen);
rayLen = min(maxLen, rayLen);
color liquidTint = color(1 - pow(comp(depthTintColor, 0), 1/rayLen),
1 - pow(comp(depthTintColor, 1), 1/rayLen),
1 - pow(comp(depthTintColor, 2), 1/rayLen));

/* color */
/* fresnel effect leads to more reflection at grazing angles and more
refraction looking straight on. However, we modulate its effect
by blending in constant amounts of both */
float Kr = 1;
float Kt = 1 - Kr;
fresnel(In, Nn, eta, Kr, Kt);
Kr = 0.25 + 0.75*Kr;
Kt = 0.35 + 0.65*Kt;

/* our diffuse and ambient terms are treated as refraction result those are
depth tinted as well */

result_c = Kr * Crefl + liquidTint * Kt * (Kd * CDiffuse + Ka) * surfaceColor;
/* vector */
result_o = (1,1,1);

RibBox 사용법

Archive 대상 rib의 경로를 지정하여 불러온다.

ReadArchive "rib/testA.rib"

ribbox가 attach되어있는 오브젝트를 rendering에서 빼고자할때 이 옵션을 추가한다.
Attribute "visibility" "int camera" 0

netperf 사용 메뉴얼 링크

http://cafe.naver.com/linuxone.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=180

http://cafe.naver.com/aptune.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=31

Linux Bonding Mode설명

여기서 mode는 해당 bonding 정책을 정의 한다. Default는 0이다. Mode의 정의는 다음과 같다.
0 Round-robin 정책: 첫 번째 가능한 슬레이브부터 마지막까지 순차적으로 전송한다. 이 모드는 부하분산과 failover를 제공한다.(Active-Active, 이론상 슬레이브 수 만큼의 배수대로 대역폭을 확장가능하다)

1 Active-backup 정책: bond에서 하나의 슬레이브만 활성화된다. 다른 슬레이브는 활성화된 슬레이브가 fail된 경우에만 활성화 된다.(대역폭은 활성화 된 슬레이브 하나만큼의 대역폭을 갖는다.)

2 XOR 정책: [(출발지 MAC 주소와 도착지 MAC 주소의 XOR) modula 슬레이브 개수] 에 기초하여 전송한다. 이것은 각 도착지 MAC 주소에 대해서 동일한 슬레이브를 선택하게 된다. 이 모드는 부하분산과 failover를 제공한다.

3 Broadcast 정책: 모든 슬레이브 인터페이스에 모든 것을 전송한다. 이것은 failover를 제공한다.(mirror, 하나의 슬레이브만큼의 대역폭을 갖는다)

참고사이트

http://www.imgun.com/bbs/board.php?bo_table=linux&wr_id=90

VNC Server Setting

http://fedoranews.org/tchung/vnc/index.shtml

페도라에서 레이드구성하기

레드헷은 raidtab 파일로 설정을 해주지만

페도라는 저런 파일이 없어 명령어 위주로

레이드 구성을 해주죠

일단 rpm -qa | grep mdadm 을 쳐봐서

mdadm 이 설치되어 있는지 보세요 없다면 mdadm rpm 파일을 꼭 설치 하세요

일단 fdisk 사용해 파티션 3개를 만드셔야 하는데요 알고 있다 치고..

아! 파티션을 나누면 꼭 Linux raid auto detect로 바꿔주세요 방법은 t를 누르고 fd 치면 끝

바로 레이드 구성하는 방법을 알려 드리겠습니다.(레이드5로)

레이드5는 하드3개를 필요로 하시는거 아시죠?

hda, hdb, hdc 에 파티션을 각 각 1개씩 똑같은 용량으로 나누어 줍니다.

그리고 재부팅을 하고나서

mdadm -C /dev/md0 -l 5 -n 3 /dev/hda1 /dev/hdb1 /dev/hdc1 이란 명령어를 칩니다.

여기서 -C는 /dev/md0으로 구성하겠다는 거고 -l은 레이드5를 구성 하겠다는거

-n은 디스크수를 3개 사용 한다는 뜻입니다.

mkfs.ext3 /dev/md0 를 쳐서 /dev/md0 을 ext3파일시스텝으로 구성해줍니다.

그리구 mount -t ext3 /dev/md0 /디렉토리명 을 쳐서 마운트해줍니다.

디렉토리명은 레이드 구성을해서 마운트하고싶은 디렉토리를 말하는 것입니다.

없는 디렉토리라면 일단 mkdir로 만들고 마운트 해줍니다.

그리고 vi /etc/fstab에 들어가서

/dev/md0 /home ext3 defaults 1 2를

추가해 줍니다. 저걸 추가해주면 컴퓨터가 리붓해도 자동으로 마운트 합니다.

마지막으로 컴퓨터를 리붓 합니다.

---출처 : naver 지식in---

Bash Profile Sample

예전 회사에서 사용하던 프로파일 셈플...

PATH=/opt/python25/bin:/opt/wx/2.8/bin:$PATH:$HOME/bin

export DATApath=/DATA
export WXDIR=/masin-tmp/wxPython-src-2.8.1.1
export RAT_SCRIPT_PATHS=/3D_work/System-Setting/rmsextensions
export RMS_SCRIPT_PATHS=/3D_work/System-Setting/rmsextensions
export MAYA_MODULE_PATH=/opt/pixar/RenderMan_Studio-1.0-Maya8.5/etc
export RMANTREE=/opt/pixar/RenderManProServer-13.0.4
export RMSTREE=/opt/pixar/RenderMan_Studio-1.0-Maya8.5
export RATTREE=/opt/pixar/RenderMan_Studio-1.0-Maya8.5
export MAYA_PLUG_IN_PATH=$RATTREE/bin:$RMSTREE/plug-ins
export MAYA_SCRIPT_PATH=$RATTREE/lib/mtor/resources:$RMSTREE/scripts
export XBMLANGPATH=$RATTREE/lib/mtor/resources/%B:$RMSTREE/icons/%B
export MAYA_MMSET_DEFAULT_XCURSOR=1
export SHAKE_PATH=/usr/shake-v4.00.0607
export PYTHONPATH=$WXDIR/wxPython
export MSERVER=vfxmg
export MASSIVE_HOME=/usr/local/massive
export RF4PATH=/usr/realflow

export PATH=$PATH:$RATTREE/bin:$RMANTREE/bin:$SHAKE_PATH/bin:$RF4PATH/bin

Linux Maya Cursor Setting

환경변수 설정

export MAYA_MMSET_DEFAULT_XCURSOR=1

Shake Path 설정

환경변수에서 path info설정
ex. export DATApath='/DATA/masin_work'

pathUI.h 생성
nuiFileBrowserAddFavorite("$DATApath");


네트웍랜더링을 위해선 필수입력사항

Window file system shares

/etc/fstab
//servername/share-foldername /mount-dir cifs uid=500,rw,suid,username='administrator',password='' 0 0

mount -t cifs -o username=administrator,password="" //192.168.1.1/data /DATA

CentOS Massive install

1. /etc/X11/gdm/gdm.conf -> /usr/share/gdm/defaults.conf
DisallowTCP=false


2. openmotif.* install
yum whatprovides libXm.so

2007년 11월 16일 금요일

테스트 게시물

테스트 게시물 입니다.