Destruction_Base fracture

2019. 5. 24. 18:29Study/Houdini

dopnetwork node tree
hard cst
glue cst
soft_cst
sopsolver
sopsolver vex 를 사용한 결과

일정 length와 angle이 되면 pin_broken 과 glue_broken soft_broken을 사용함으로써 cts가 끊어지게 만들었다.

sopsolver vex를 사용하지 않은 결과
geo 에서 mass 를 추가
각각 piece 에 mass 가 곱해진 결과
sopsolver에 name to point

int pointnumber = nametopoint(1, s@name);
4@transmatrix = primintrinsic(1, "packedfulltransform", pointnumber);
v@P *= 4@transmatrix;

int pt0 = primpoint(0, @primnum, 0);
int pt1 = primpoint(0, @primnum, 1);
vector position0 = point(0, "P", pt0);
vector position1 = point(0, "P", pt1);
f@length = length(position0 - position1);
if (@angle > 0.1){
    vector center = (position0 + position1)/2;
    setpointattrib(0, "P", pt0, center);
    setpointattrib(0, "P", pt1, center);
    }

length의 값을 계산해서 borkne의 사용

v@P *= invert(4@transmatrix);
matrix3 rotmatrix = (matrix3) 4@transmatrix;
@orient = quaternion(invert(rotmatrix));

if(@angle > 0.07){
    s@constraint_name = "pin_broken";
    }
if(f@length > 2){
    s@constraint_name = "pin_broken";
    }

glue에 있는 attrib 

if(@Frame>17){
    if(s@constraint_name == "soft_glue"){
        i@count++;
            if(i@count>3){
                s@constraint_name = "soft_broken";
                }
        }
    
    
    if(@constraint_name == "glue"){    
        if(@impact > 25000){
            s@constraint_name = "soft_glue";
            i@count = 0;
            }
        }
}

@impact 을 이용해서 일정 @count가 @impact에 의해서 3을 초과하면 sofr_broken attrib를 생성한다.

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

Portal Volume&&Lighting  (0) 2019.04.11
TEXT_LURP  (0) 2019.04.03
Groud_Fire  (0) 2019.04.03
Cloud  (0) 2019.04.03
Explosion  (0) 2019.04.03