After watch a few rigging reel using xsi or maya,I think that it would be much easier in animating if the rig has realtime delay effect.
But I was confuse how to do in max until I got a sample scene from zhangy(www.zhangy.com).
After study that scene,I wrote this script.I give a name:realtime spring.But it doesn't have the "shake" effect,I mean when the dynamic object reach the driver object's position it would stop.So it actually make a delay effect.
My english is bad,so I recode the video in chinese,hope you understand the usage.
I am not good at R&D too,so it has much more space to improve.
Maybe someone would make it better.
ps:script tested in max8 and max9.
Thanks to:
Zhangy(make the basic idea)
Mingyu (for testing ang making fish example scene)
update version 1.1
fixed:error when the scene has biped object.
update version 1.2
fixed:script controller error in max8.
update version 1.3d
*add filter fucntion to manage spring node by comment.
*loop before bake:loop animation few times before baking,get stable action in loop animation
*bake animation speed,when you get good movement with different animation speed,use this funciton to bake it.
*subsample,use "bake with subsample frames" button to do more percise calulation.
update version 1.4
*press esc key to exit when baking
*make it work in max8
This is a quick tutorial discussing a satin shader I made in brazil, and some of the thought behind making it.
Someone came on the Splutterfish Forum, and wanted to know how to make a satin material. I was waiting at home for a plumber, and didn't have much to do, so I decided to give it a try.
First off, here's the reference image I was given.
I started by making some cloth looking geometry. I downloaded the free version of simcloth, took a plane, put a noise modifier on it, then dropped a second plane on top of the first plane. My second plane (the cloth) all bunched up like cloth would when it impacted the first plane. I then deleted the first plane and now had some wrinkly cloth.
Next came the shader. One of the things about satin is it's shiny, and has a fine thread structure that primarily travels in one direction, hence I decided to use an anisotropic shader for the highlight. This led to my first stab at the shader...
Parameter wise, it's a brazil advanced material, a blinn highlight shader, anisotropy of 0.6 angle of 45, very tall wide highlight. The base shader is velvet with some color in the luminosity to bring a little extra illumination in the dark areas (faked translucency). Bump wise, I used a bump from darktree, the denim shader, but I removed the color and left only the bump, saved it as a dtsb file, and used it in the brazil material's bump channel.
While it retained some of the right aspects, a friend pointed out that it still looked a bit too rubbery, probably because the bump was too strong, and also the shadow areas weren't getting enough light (ie, I didn't go far enough with my faked translucency). So I added a little more luminosity to bring more light and color into the dark areas, and hence a much lighter, silkier material. Also, I mixed the threaded bump with a little bit of fractal noise, again in darktree (the rough procedural) with a high lacunarity value. This led me to my second stab at the material...
Then a little more refinement
Finally, I realized the material would actually be pretty rough due to all the threads, and hence instead of using a brazil default shader (who's diffuse component is lambert), I switched to an oren nayar shader, and added some roughness in there (0.7). Tweaked the other parameters again ever so slightly, a slightly tighter highlight, and here's the result...
출처
This site is ⓒ2004 by Neil Blevins, All rights are reserved. Back to NeilBlevins.com
Bounce : 오브젝트가 충돌시 튕겨 오르는 정도. (값이 0일때는 전혀 움직임이 없다.) Slip : 마찰의 반대되는 개념이다.값이 1.0일때 다른 오브젝트 위로 잘 미끄러 진다. Paticle mass : 오브젝트의 질량 Space waps : Pick Waps와 Delete Waps두개의 버튼이 있다. Pick Waps버튼은 바람(Wind)을 추가할때 사용될 수 있다, Wind가 추가되었을땐 strength 값을 높게 해야만 Cloth에 영향을 줄 수 있다. Air resistance: 값을 높이면 Cloth의 움직임을 둔화 시키게 된다. Gravity: 중력값
메뉴 중에 * 표시가 된 것은 Global Parameter로서 Scene 전체에 적용된다.
[ Integrity ]
Num.steps: Tightening 프로세스의 최대 step 값을 설정해 준다. Vertex가 많은 오브젝트는 값을 높여 주어야만 한다.값이 낮으면 천이 보다 많이 늘어나게 된다. 일반적인 값은 50-100사이에서 설정하는게 좋다. Deflection값에 따라서도 영향을 받는다. Tightness: Cloth의 탄성값을 설정한다.값이 작을 수록 더 많이 늘어난다. Tightness가 너무 높을때는 Integrity 값을 전부 상실할 수 있다. Min.subdivs값을 높게 설정한 경우라면 Tightness값도 높게 설정할 수 잇다. Tightness bias: 값이 0보다 작으면 Cloth에 수축성을 더 주고 0보다 크면 늘어난다. Spread force: 탄성을 줄여주는 역할을 한다.값이 높을대 보다 타이트해 진다. Keep speed: Paticle의 속도가 얼마나 유지될 것인가를 설정한다. Bond range: Paticle사이의 거리. 1.0일때 각 Paticle들은 Mesh의 Edge를 따라 서로 연결된다. 2.0일때 각 Paticle들은 하나 건너씩 연결된다. 값이 높으면 Cloth가 쉽게 휘지 않는다. Keep shape: Bond range가 1.0-2.0 사이일때 Bonds에 의한 모양형성을 유지하도록 도와 준다. Bonds scale: Bonds lenth의 크기를 조절한다. 1.0에서0.5로 값을 애니메이션 시키면 Cloth가 절반크기로 수축한다. Affect X, Affect Y, Affect Z: 각 축으로 얼마만큼 크기가 조절될 것인가를 설정해 준다.
[ Deflection ]
Self deflect: 자체 충돌 체크하는 옵션이다. 천이나 깃발등이 휘날리다 Mesh를 뚫고 들어가는 현상등을 방지할 수 있다. Deflect distance: 충돌 체크를 위한 거리를 설정한다. React to deflection: Cloth와 Deflector의 반응 강도를 제어한다. 이 옵션은 Default값을 쓰는게 좋다. Self-defl.range: Cloth가 보다 유연하게 휘게 하기위해 가까이에 있는 부분들은 self-deflection이 체크되어 있어도 충돌체크를 하지 않는다. 0.0일때는 모든 부분이 충돌 체크를 하며, 1.0일때는 Diflect distance안에 포함 된 것들은 서로 충돌 체크를 하지 않는다. 2.0은 Diflect distance의 2배 거리를 의미한다. Fold curve: 원점에서 Diflect distance까지 도달하는 속도를 제어한다. 대부분 1.0 값을 사용한다. Detect intersection: SimCoth에서 오브젝트들 간에 교차되는 부분을 체크하게 해준다. Detected types: Cloth의 충돌타입을 정할 수 있다. Bound.box divs: 각 파트를 Bounding box타입으로 나누어서 게산 속도를 빠르게 해준다.
[ Simulation ]
Start frame, End frame: Simulation의 시작과 끝 frame을 설정할 수 있다. Redraw views: 체크되어 있으면 Simulation을 계산하는동안 viewport에서 과정을 볼 수 있다. Min. subdivs, Max. subdivs: 한 frame에 대한 subdivisions의 최소값과 최대값을 설정한다. Dist. thresh: 이 값보다 실제 오브젝트들이 가까울땐 sampling rate를 증가 시킨다.
일반적으로 금속질감은 표현하기 상당히 까다로운 작업일수도 있습니다. 그이유는 반사 질감의 메탈은 퀄리티의 변수가 너무 많기 때문이기도 합니다. 예를 들면 주변 환경이나 조명..그리고 보이는 카메라 앵글 각도에 따라 전혀 다른 효과가 나오기 때문입니다. 그래서 보통 반사 재질을 많이쓰는 타이틀 에니메이션 같은경우는 일부로 금속 질감을 주기 위해서 글자 모서리를 Bevel을 주게되는데....반사재질은 평면에 잘 표현되지 않기때문입니다. 그렇기 때문에 반사 재질을 사용하실때는 평면보다 곡면이나 빛을 잘받는 작은 면에 효과를 많이 본다라는 사실을 반드시 염두해두는 것이 좋습니다. 평면에 반사를 시키기 위해서 아무리 해도 질감이 안나와서 계속 하시는 분들이 많은데.... 일단 곡면으로 질감을 연습한다음 감을 잡은후에 평면 질감을 연출해보는 것이 좋을듯합니다. 일단 반사 질감은 라이트가 상당히 중요합니다. 그리고 반사될 오브젝트가 없을경우에는 가짜 반사(일명:후루꾸 반사)를 만들기 위해서 외부 반사에 쓰일 그림을 불러오는 방법도 있습니다. 이것은 실제 반사 퀄리티보다 오히려 더좋을수도 있게 됩니다,. 아래의 팁은 주변 공간 반사와 맵소스를 이용한 반사를 같이 응용해보겠습니다. (주변 반사를 안할경우는 맵소스 반사만 사용합니다.)
일단 예제를 위해서 위와같은 3개의 오브젝트를 만들어 보겠습니다. 3개의 오브젝트에 모두 같은 재질을 사용할것이며 왼쪽 박스의 평면에 반사되는것과 중간에 구조물,, 그리고 원에 반사되는 질감을 보시면 오브젝트 모양에 따라 반사되는 효과를 알수있게 될것입니다.
일단 머튜리얼 에디터를 실행하고 Maps항목에 그림(좌) Reflection에 None을 누른다음 Raytrace를 선택합니다.그리고 그림 (우)와 같이 Background항목에서 외부 반사 재질을 불러옵니다. (위 예제에 쓰인 이미지는 맥스 3dsmax6\maps\Reflection폴더안에 LakeRem.dds파일를 사용 한것입니다. 이파일이 없으면 추가 설치를 하시든지 아니면 다른 이미지를 사용하세요)
그림(좌)와 같이 세이딩 모드를 Metal로 선택한 하고 Ambient와 Diffuse를 모두 하얀색으로 하고 Specular Highlights값을 적절히 조절합니다,. (Specular Highlights값에 따라 퀄리티가 많이 좌우가 됩니다.일단 대략 설정하고 라이트를 설치한다음 다시 조절하는것이 좋습니다.) 그리고 그림(우)와 같이 Coordnate항목에 Blur offset값을 0.03~0.05값을 주어 원본 이미지를 흐리게 하여 그림들이 보이지 않도록 해줍니다.그리고 옆에 Angle에 W값을 30정도로하여 이미지를 돌려주어 불규칙 이미지로 만들어 줍니다. (반사 맵을 사용할때는 반드시 반사되는 부분에 반사맵 이미지의 형태나 그림이 안보이도록 해줍니다.)
Output항목에 그림(좌)와 같이 반사맵의 밝기와 농도를 조절하여 반사맵의 선명도를 조절해줍니다. (랜더링을 걸어보며 확인하며 조절합니다.) 그리고 그림(우)과 같이 위에있는 (밝기:1.2/색:하늘색/그림자)과 보조광(밝기:0.5/색:주황색)를 설치합니다. (라이트는 상당히 중요하기때문에 뭔하는 효과가 날때까지 계속 랜더링 걸어보며 위치를 조절합니다.)
(좌)그림과 같이 2개의 라이트를 적절히 조절해줍니다.그리고 V-ray나 파이날랜더에 커스틱 같은 바닥 반사 효과를 주기위해서 그림(우)와 같이 오브젝트 하단에 영역 라이트를 심어주면 비슷한 효과를 볼수 있습니다.
위 의그림을 보면 2개의 라이트로 연출된 장면입니다. 일단 왼쪽 박스를 보면 평면부분은 반사가 거의 표현 않된것을 알수있습니다.그런데 이것이 반사 오브젝트라는 것을 표현해주는 부분은 모서리부분에 꺽이는 각의 면에 빛반사가 들어갔기때문입니다. (일반적으로 타이틀 로고나 글자 에니메이션의 기본 팁) 그리고 중간에 오브젝트는 위쪽 평면보다 중간 꺽이는 부분에 반사가 더 많이 된것을 알수있습니다. 그리고 맨 왼족에 구는 모두 라운딩된 곡선에 물체이므로 반사의 효과를 최대한 볼수있게 됩니다.
오브젝트 하단에 커스틱 효과를 주기 위해서 영역라이트를 설치하면 고품질 랜더러로 랜더링한 효과를 볼수있습니다.
HDRI 맵을 사용하는 이유를 간단히 말씀드리겠습니다. HDRI맵을 사용하여 장면을 연출을 하는 정의를 말씀드리자면... 일단 라이트를 사용하지않고 배경의 이미지를 라이트로 사용하게 됩니다. 흔히 실사 합성에 많이 사용되는 방식인데...일반적으로 실사 배경에 CG를 합성할경우 라이트를 설치하는데...배경 실사에 일어나는 난반사는 오브젝트에 영향을 받지 않게 됩니다. 일부러 라이트의 수를 늘리거나 색라이트를 써서 최대한 오브젝트와 실사 배경의 전경색을 맞추는 경우가 많이있죠... 그래서 라이트를 설치하고 고품질 랜더링을 하더라도 부드러운 합성을 연출하기에는 부족함 점이있겠죠... 이럴때 HDRI맵을 사용하게 됩니다. HDRI맵은 이미지가 아닌 라이트 로써의 역활을 하게 됩니다.
예를 들면 캠코더로 붉은 노을이있는 강가에서 실사 촬영을 합니다. 그런데 이 실사 촬영 소스에 CG를 합성할려고 하는데... 모든 배경들이 붉은 색이 있다고 한다면....일반적으로 맥스에서 라이트를 만든다음 붉은색 라이트를 줘서 실사 배경과 CG오브젝트의 색감을 맞추게 됩니다.
만약 이때 HDRI맵을 쓴다면 디지탈 카메라로 저녁 노을 배경을 찍은다음 HDRI맵으로 만든다음 맥스에서 라이트로 사용된다면 훨씬더욱 리얼한 연출이 될수가 있습니다.
일단 밑에 예제를 통해 HDRI맵의 기본 사용법을 통해 좀더 이해해보도록 하겠습니다.
일단 위의 그림처럼 모델링된 장면을 HDRI맵을 작용시켜 장면을 연출해 보겠습니다
위의 장면은 라이트없이 맥스 스캔라인 랜더러를 사용한것입니다.
일단 Environment를 열고 Background 항목에 None을 누릅니다. 그러면 Material/Map Browser창에 VrayHDRI를 선택합니다.
None등록된 HDRI를 머튜리얼 에디터를 열고 빈슬롯에 드래그 한 다음 인스탄스 복사를 합니다. 그리고 아래 HDRI맵을 지정을 합니다.
예제에서 사용되는 HDRI맵입니다. HDRI 맵은 기존에 제공되는 것도 있으며 만들어주는 프로그램도 있습니다.
HDRI맵을 지정하면 밑에 옵션을 조절할수있습니다. Multiplier값은 라이트 밝기라고 생각하시면됩니다. 그리고 Map Type를 선택하는데 랜더링을 걸어보면서 선택하는 것이 좋습니다.
Vray랜더링 창을 기본 셋팅으로 하고 랜더링을 걸면 HDRI맵에 효과를 볼수있습니다.
HDRI를 이뇽한 랜더링 장면입니다. 라이트를 전혀사용하지않고 HDRI맵이 라이트 역활을 하게 됩니다.
특정 오브젝트가 라인을 따라 이동 하는 에니메이션을 설명하겠습니다. 이 기능은 modify에 오브젝트를 변형하는 pathdeform과 다르게 단지 라인을 따라만 가게 해줍니다. 일반적으로 이 기능은 카메라나 라이트같은 이펙트한 움직임을 경로로 에니메이션 할때 아주 유용하게 사용할수있습니다
(좌)그림처럼 에니메이션 경로가될 라인과 경로를 따라갈 카메라 같은 오브젝트를 생성합니다. 그리고 (우)그림과 같이 라인 경로를 따라갈 오브젝트를 선택합니다.
Motion탭에 Assign Controller항목에 Postion항목을 선택하고 위에 ?아이콘을 선택합니다.
Assign Position Controller창에 Path Constraint를 선택합니다.
Path Parameter항목에 Add Path누르고 경로가될 라인을 선택하여줍니다. 그리고 %Along Path값을 올려주면 해당 오브젝트가 경로 라인을 따라 이동하게 됩니다.
※주의※
현재는 설명을 위해서 타겟카메라를 설치해서..카메라만 패스를 따라가게 하엿는데. 그렇게되면 타겟점은 움직이지 않기때문에 카메라가 이상하게 변할수있다. 이럴땐 타켓카메라를 프리카메라로 바꾸던가 아니면..카메라와 타겟점을 더미에 걸어서 더미를 패스에 따라 움직이게 하면 잘될것이고.. 카메라를 이동할때 타겟점이 움직여야할때는 카메라만 패스에 걸어주면된다.
Name : DJ Lee Nick : MotionDJ Sex : Male Position Motion Graphic Designer Motion Technician Tel : +82.10.9491.1106 E-mail : motiondj@dstrict.com Office Address Dongsung Bldg. 4F Nonhyun-dong 95-14, Gangnam-gu, Seoul, Korea
댓글을 달아 주세요
고맙습니다. 덕분에 고민하던게 풀렸네요.