building_destroyed

2018. 7. 7. 13:34Study/Houdini



BUILDING NODE 

건물을 VORONOI로 쪼개고 세우는 과정


SIM 결과 밑에 부분이 지탱하지 못하고 죽어버리 때문에 

wangle을 통해 VEX 로 해결해준다.

1
2
3
4
5
6
if (@P.y < ch("y_position")){
    i@active = 0;
}
else {
    i@active = 1;
}

cs



하나의 구조물을 만들고 COPY NODE 를 이용하여 건물을 만들기 때문에 S@NAME ATRR 가 겹치는 경우가 생긴다. 그렇기에 @ptnum 을 이용해서 sprintf 로 이름을 새로 써준다.

1
2
s@old_name = s@name;
s@name = sprintf("piece%d",@ptnum);
cs



PIECE PROXY (INSTANCE) 만들기

PIECE NODE

고퀄리티 PIECE로 SIM 과 PREVIEW를 하게 되면 RAM과 시간이 오래걸리기 때문에 PROXY를 만든다.



ATTRIBUTE VOP 을 이용하여 PIECE 마다 굴곡을 준다.



조각마다 접근을 해야하기 때문에 DELETE NODE 를 이용한다.

@class == `$F` 를 사용해 FRAME 마다 조각에 접근한다.



FILE CACHE PATH 는 잘알아두어야 한다. 

INSTANCE 설정시 사용하여야 한다.

NAME ATTRI 도 중요하기 때문에 

1
`prims("../delete3/",0,"name")`
cs

prims 를 이용해 접근한다.



GLUE

GLUE 생성 전체 NODE

"Connect adjacent pieces" "cluster" 를 이용하여 만든다.

assemble 로 압축을 했기 때문에 "packed edit" 를 이용하여 조각마다 중심포인트를 얻어 낸다.



"Attribute VOP" 을 이용해서 Cluster attri 를 생성한다.

"Voronoise" 를 이요해서 Cd로 뽑아내고 "bind export" 로 attri를 생성한다.

cluster 는 glue 가 뭉쳐있게 해준다.



"Attribute Wangle" 을 이용해서 "glue_inside" , "glue_outside" 를 생성한다.

기본 GLUE 생성(basic)

1
2
3
4
5
6
s@constraint_name = "glue";
f@strength = 1.0;
 
if(rand(@primnum) < 0.5){
    f@strength = 1000;
    }
cs

glue inside , outside

cluster 를 이용한 inside, outside 생성 (암기)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int pt0 = vertexpoint(0, primvertex(0, @primnum, 0));
int pt1 = vertexpoint(0, primvertex(0, @primnum, 1));
 
int cluster0 = point(0"cluster"0);
int cluster1 = point(0"cluster"1);
 
if(cluster == cluster1){
    s@constraint_name = "glue_inside";
    }
else{
    s@constraint_name = "glue_outside";
    }
 
f@strenght = 1.0;
cs



SIM

proxy (Timeshift)

"File cache" 까지는 일반적인 Node 구성

그 이후부터는 instance 를 이용한 proxy 구성  



조각 Proxy 만들고 저장했던 CACHE PATH를 instance_lo / instance_hi 에 각각 심어준다.

저장된것을 불러오는 방법

1
2
3
s@instance_lo = sprintf("$JOB/instance_lo/v%d/%s.bgeo.sc",chi("../controll/iver"), s@old_name);
s@instance_hi = sprintf("$JOB/instance_hi/v%d/%s.bgeo.sc",chi("../controll/iver"), s@old_name);
 
cs



"instance" 에서 위에서 만들어준 attri 속성을 적용해준다.



"Time Shift" node 에서 Frame 을 1 로 설정한다.

(아직 이유를 모르겠음)



그냥 연결하게 되면 point 에 붙기만 하고 pivot과 transform이 다 맞지 않기 때문에 설정하여 준다.

(Time Shift proxy)

추후 렌더링을 할 때 motion blur 가 필요하기 때문에 "P", "v", "w" 를 불러온다.

1
2
3
4
5
6
7
8
9
matrix3 transform = primintrinsic(1"transform", @ptnum);
vector pivot = primintrinsic(1"pivot", @ptnum);
 
setprimintrinsic(0"transform", @ptnum, transform);
setprimintrinsic(0"pivot", @ptnum, pivot);
 
@P = point(1"P", @ptnum);
@v = point(1"v", @ptnum);
@w = point(1"w", @ptnum);
cs



TIP

"DOP Network" 에서 "object" 를 ^ground* 해주면 ground 가 빠져 SIM이 된다.

그래야 PROXY POINT 와 SIM POINT가 맞아 연결이 된다.



SIM INSIDE

GLUE가 두개로 나뉜다.

"POPS SPEED LIMIT" 을 이용해서 속도 LIMIT 을 해준다.



SOPSOLVER

"GLUE" 가 POPMETABALL 을 만났을때 사라지는 부서지는 것을 만들어줌

"암기"



RBD 에서 Geomerty를 가지고 온다.



point 와 name attri 를 찾는다.

각각 mass 와 force 도 지정해준다.

여기서는 attri 설정

1
2
3
4
int pt = findattribval(1,"point","name",@name);
@P = point(1"P", pt);
f@mass = point(1,"mass", pt);
v@force = point(1"force", pt);
cs



"Attribute Promote" 를 이용해서 point 에 있는 것을 primitive 로 옮겨준다.



force 와 mass 를 이용해 가속도를 구한다.

그 가속도를 이용해서 activate 설정을 만들어준다.

ch를 이용해 hi에 넣을 것인지 lo에 넣을 것 인지 설정해준다.

1
2
3
4
5
6
float accel = length(v@force / f@mass);
 
if(accel > ch("max_accel_thresh")){
    @group_hi_activate = 1;}
else if (accel > ch("min_accel_thresh")){
    @group_low_activate = 1;}
cs




low와 outside가 만나면

또는 hi에 들어가면

broken 이 작동되어진다.

1
2
3
4
if(@group_low_activate && s@constraint_name == "glue_outside"){
    @group_broken = 1;}
else if (@group_hi_activate){
    @group_broken = 1;}
cs



WEDGE

"WEDGE" 를 이용해서 여러가지 SIM 을 자동으로 돌릴수있으며 PREVIEW 가 가능하다.

"WEDGE"는 "Channel" 과 "Range" Path 만 유의해 주면 된다.



SIM 이 끝난 "Wedge" 를 preview 하는 방법은 "For Loop" 를 이용해서 preview 한다.

 path 에 

1
`detail("../repeat_begin1_metadata1/","iteration",0)`
cs

이 detail "iteration" 을 넣어줌으로써 자동으로 wedge ver이 불러와진다. (반복이 되어지면서 숫자가 올라간다.)

(단 "Wedge" 에서 경로가 똑같게 설정해주어야 한다. 변하는 부분은 숫자만)

그렇게 불러들이고 "instance" 를 이용하여 바꾸어준다.



Cache path에 있던 parameter 들

만들어 주어 연결한다.



'Study > Houdini' 카테고리의 다른 글

SMOKE  (0) 2018.07.14
GROUND_DESTROYED  (0) 2018.07.12
voronoi_fracture  (0) 2018.03.25
round_to_integer  (0) 2018.02.08
volume_curl  (0) 2018.02.07