들어가며
조작키
Overview
마우스 | 좌클릭 + 이동 | 선택 |
우클릭 + 이동 | 줌 | |
휠클릭 + 이동 | 뷰 잡아서 이동 | |
ALT 좌클릭 + 이동 | 복제 | |
Enter | 핸들 보여주기 ( 노드 별 다름 ) | |
뷰모드 | Space | 토글 / 누른채로도 유지 가능 |
F | 오브젝트 포커스 | |
W | Wire 프레임 | |
D | 옵션 - Display Option | |
Y | 고스트 오브젝트 하이드 토글 | |
Ctrl + B | 뷰포트 전체화면 | |
Space + B | 뷰포트 4분할 (씬 뷰) | |
Space + G | 오브젝트 중심으로 줌 | |
Ctrl + J | 토글 멀티 스냅핑 | |
선택모드 | S | 토글 |
T | 움직임(T ranslate) | |
R | 회전(R otate) | |
E | 스케일(scalE ) | |
1 | Select - Object | |
2 | Select - Point | |
3 | Select - Edge | |
4 | Select - Primitive | |
드래그 | 선택 | |
Shift + 드래그 | 선택 - 추가 | |
Ctrl + 드래그 | 선택 - 해제 | |
카메라 모드 | ESC | View Tool |
Viewport | 1 | Viewport - perspective |
2 | Viewport - Top | |
3 | Viewport - Front | |
4 | Viewport - Right | |
5 | Viewport - UV | |
CTRL + 1,2,3,4,5,6,7,8 | Viewport - 분할뷰 | |
Pane | CTRL + W | Pane 닫기 |
Pane | CTRL + B | Pane 최대/최소화 |
ALT + [ | Pane 세로로 줄귿기 | |
ALT + ] | Pane 가로로 줄귿기 | |
** ALT + 1 | 씬 뷰 | |
** ALT + 2 | 네트워크 뷰 | |
ALT + 3 | 파라메터 | |
ALT + 4 | 트리 | |
ALT + 5 | 텍스트포트 (여기서는 알트 단축키 안먹음) | |
ALT + 6 | 애니메이션 에디터 | |
ALT + 7 | 머티리얼 | |
** ALT + 8 | 지오메트리 스프레드 시트 | |
ALT + 9 | 렌더뷰 | |
ALT + 쉬프트 + W | 새로운 창 |
Object View
- https://www.sidefx.com/docs/houdini/network/wire.html
Object View | |
---|---|
Y | 가위자르기 |
P | 프로퍼티 보기 |
U | up 상위 노드로 이동 |
O | 네트워크 오버뷰 |
Z | 노드 모양 // Ctrl + 드래그로 기본 노드 모양 변경 가능 |
C | 노드 색깔 // Ctrl + 드래그로 기본 노드 색깔 변경 가능 |
정렬 | 노드 선택후 A키 누른상태에서 아래로 (https://siver.artstation.com/blog/zORm/houdini-blog-22-tips-and-tricks) |
Shift + S | 선 스타일 바꾸기 // wiring style change: rounded <-> straight |
Shift + R | 입력 순서 교체 |
Shift + L | Layout 정렬 |
Shift + Z | 그룹보기 |
Shift + O | Network Box |
Shift + P | Sticky 노트 |
Ctrl + I | Background Images: Enable/Disable // Shift + I 혹은 Labs > Sticker Placer |
Alt | 이음 노드 추가 |
Q/B | 노랑색 Bypass |
W | 진한 보라색 |
E | 연한 보라색 미리보기 토글 |
R | 파랑색 선택된것들 돌아가며 선택 |
Keyframe
alt
Ref
설정
houdini.env
C:\Users\pyoung\Documents\houdini19.5\houdini.env
# houdini.env
# EDITOR = "C:/Program Files/Microsoft VS Code/Code.exe -w"
환경변수
Env | |
---|---|
$HIP | hip 파일이 저장된 절대경로 |
$JOB | project 절대경로 |
HOUDINI_OTLSCAN_PATH |
Aliases and Variables... | Alt+Shift+V |
단축키
Edit > Hotkeys | ||
---|---|---|
Copy Parameter | /Houdini/Panes/Parameter Fields and Labels | Ctrl+Shift+C |
Copy Parameters | /Houdini/Panes/Parameter Spreadsheet | Ctrl+Shift+C |
Paste Copied Relative Refs | Ctrl+Shift+V |
색상조정
- 후디니> Edit > Color Setting > Color collection 확인
파일
분류 | 확장자명 | 설명 | LICENSE |
---|---|---|---|
씬파일 | .hip | H oudini I ndependent P ackage | |
.hiplc | Houdini Independent Package Limited Commercial | INDIE | |
.hipnc | Houdini Independent Package Non-Commercial | EDUCATION / APPRENTICE | |
에셋 | .hda | H oudini D igital A ssets | |
.hdalc | Houdini Digital Assets Limited Commercial | INDIE | |
.hipnc | Houdini Digital Assets Non-Commercial | EDUCATION / APPRENTICE | |
세션 | .hess | H oudini E ngine S essionS ync |
- https://www.sidefx.com/faq/question/houdini-engine-plugin-free-for-unity-and-ue4/
HOUDINI ENGINE | ||
---|---|---|
for Unity/Unreal | .hda | 최대 10개 |
INDIE | .hda .hdalc | 최대 3대 |
EDUCATION | .hda .hdalc .hdanc | |
APPRENTICE | X |
https://www.sidefx.com/docs/houdini/unity/ https://github.com/sideeffects/HoudiniEngineForUnity https://www.sidefx.com/download/daily-builds/
HDA
Houdini Digital Assets
저장 | Save Node Type |
락 풀기 | Allow Editing of Contents |
락 걸기 | Match Current Definition (주의 Revert와 같은거. Save Node Type 필수) |
속성 편집 | Type Properties (주의 Edit Parameter Interface는 HDA가 아닌 해당 노드만 수정함) |
-
파라미터 필드 추가 단축키
- alt + 마우스 중간 쿨릭
-
Introduction to HDA (Houdini Digital Asset) in Unreal Engine UE4 & Houdini for Beginners
Geometry Node
-
attr
-
기본
- sphere
- box
- grid
- tube
- rubbertoy
- tommy
- platonic(tetrahedron/cube/octahedron/icosahedron/dodecahedron/soccerball/utahteapot)
노드 | |
---|---|
Add | 점 추가 // 모델에서 점만 남기기, 점으로 선만들기 |
Ends | Face/Hull 탭과 같은 기능입니다 |
Peak | Peak 노드는 프리미티브/포인트/에지/브레이크 포인트를 법선 방향으로 이동합니다 |
Transform | 트랜스폼 - 전체/그룹 |
Edit | 트렌스폼 - 컴포넌트 단위 |
Delete | 지우기 - 기능 더 많음 |
Blast | 지우기 - 간단한 |
PolyExtrude | 밀어내기(extrude), 그룹핑 가능 |
PolyBevel | 비스듬한면(bevel), 선에 점을 추가하여 아치형으로 변경 |
PolyPath | 이어진 여러 라인을 하나의 라인으로 만듬 |
PolyFrame | TangentName에 N을 넣는. TBN 구하기 |
Group | 그룹핑 - 추가 |
Group Expression | 그룹핑 - 표현식으로 // Union with Existing |
Group Delete | 그룹핑 - 삭제 |
Group by Range | 그룹핑 - 범위 // Invert Range |
Group Combine | 그루핑 - boolean연산 |
Group Transfer | 그루핑 - override / distance threshold 유용 |
Reverse | 노말 - 반대로 |
Normal | 노말 - 스무스 효과 가능 |
Boolean | 교집 - 교집합/합집합 |
Clip | clipping - 자르는거 |
ROP Geometry Ouput | 캐쉬 - 생성 $HIP/geo/$OS.bgeo.sc // $OS. Operator String 노드이름 |
File | 캐쉬 - 불러오기 |
File Cache | 캐쉬 - 생성 / 불러오기 - 기능이 2개라 햇갈려서 잘 쓰지 않음 |
Attribute Create | Attribute - 생성 // 그룹에 대한 attribute 생성도 가능 // $PR 할당할때 |
Attribute from Map | Attribute - 이미지로부터 attribute를 가져옴 |
Attribute Promote | Attribute - 포인트 어트리뷰트를 프리미티브 어트리뷰트로 변환하는것 처럼 서로 다른 클래스로 어트리뷰트 전환이 가능 |
Attribute Transfer | Attribute - 이전. 가까이 있는 Attribute를 가져온다 |
Attribute Randomize | Attribute - 랜덤화 |
Attribute VOP | Attribute - VOP 노드에는 자체는 키를 줄 수 없다 / VOP 노드 선택> VEX/VOP Options> Create Input Parameters |
Scatter | 면에다 점찍기 |
Triangulate 2D | 포인트를 잘 연결해 트라이엥글로 만들어줌 |
Resample | 다시 표본화. 선에 점찍는 용도 |
Polywire | 와이어프레임 |
Curve | 간단한, 베이지어 커브 |
Smooth | 완만하게 해주는거 커브, 리셈플이랑 주로 같이 쓰임 |
Carve | 깍아내기 // uv로 선을 자름 |
Sweep | 선따라 길만들기 |
Copy To Point | 포인트들 위치로 복사 |
Copy And Transform | 갯수만큼 복사 |
Mirror | 좌우 대칭 |
Foreach | https://www.youtube.com/watch?v=xs5WezgOZlo |
Platonic Solids | Tetrahedron(4)/Cube(6)/Octahedron(8)/Icosahedron(20)/Dodecahedron(12)/Soccer ball(pentagonal b12 + w20)/Utah teapot |
Iso Offset | Builds an offset surface from geometry. // 볼륨변환 // Scatter랑 같이 쓰이기도함 |
Convert | 지오메트리 - 기하학을 변환(ex 폴리곤화) // LOD |
Remesh | 지오메트리 - 메쉬 늘리기/줄이기 |
Facet | 지오메트리 - 점 또는 표면 법선을 통합 |
Fuse | 각 포인트들을 거리나 Snap에 따라 합치기. 프리미티브 가운데 찾기. Normal 다시 계산하는게 기본이므로 주의 |
linear taper | 오므라들게 |
Match Size | Resizes and recenters the input geometry to match a reference bounding box. |
Skin | 두 표면사이에 스킨을 씌워준다. // Keep primitives 로 원래 모양도 유지가능 |
Sort | Point 나 Primitive를 정렬. Shaft/Offset을 이용 오프셋 작업 가능Ï |
Convert Line | 포인트끼리 연결한 라인 |
Revolve | 중심 축을 중심으로 곡선을 회전하여 표면을 만듬 |
Object Merge | 외부 노드 불러오기 |
Visualize Attribute | Attribute 기반 시각화 |
Divide | Don't Generate Slivers/Avoid Small Angles 동시 체크 추천 |
Clean | |
Pack | 게임엔진에서 별도의 메쉬로 취급 |
Unique Points/Point Split | Splits points shared by multiple vertices, optionally only if the vertices differ in attribute value. / PolyWire랑 쓰면 좋음 |
Curve같은 경우 Assets > Asset Definition Toolbar > Show Always 로 이전 버전의 curve를 사용할 수 있다.
-
NURBS(Non-uniform rational basis spline)
-
uv ref
UV | |
---|---|
UV QuickShade | 평면 // grid 한장 |
UV Project | 프로젝션 기법을 이용하여 UV 전개 |
UV Unwrap | 자동 uv 평탄화 및 구릅핑 |
UV Texture | 평면은 물론, 구형이나 원통형을 UV 전개 |
UV Flatten | flattening constraints// Seam(이음매), Rectify(바로잡다) |
UV Layout | uv 그룹 배치 |
AutoUV | SideFXLab 에 통합됨 |
Labs UV Visualize | UV 시각화 |
foreach | |
---|---|
iteration | 0, 1, 2 ... |
numiterations | 1, 2, 3 ... |
ivalue | start + increment * iteration |
value | start + increment * iteration |
point("../OUT_P", 0, "P", 1) // OUT_P노드의 0번째의 point P의 Y좌표(xyz / 012)
prim("../OUT_Cd", 2, "Cd", 0) // OUT_Cd노드의 2번째의 primitive Cd의 Red채널값(rgb / 012)
opdigits(".") // 현재 노드의 이름의 숫자만 가져옴
rand(x) // 랜덤. 분포가 일정하게 되는데 그럴때 사칙연산을 내부적으로 넣어주기도 함
chramp("radious_ramp", @curveu) // 기어버튼으로 추가된 radious_ramp curveu의 위치 값을 가져온다
detail("../META/", "iteration", 0) // META에 있는 iteration의 0번째 값
Primitive Type |
---|
Primitive |
Polygon |
Polygon Mesh |
Mesh |
NURBS |
Beizer |
Polygon Soup |
Attribute VOP
- Bind 노드로 attribute 노출 가능.
- Constant로 연산시 캐스팅 주의 ( int 1.0 + float 0.5 = int 1로 되어버리는 경우가 있음 )
Point From Volume 액체 제작할때 많이 사용. 단독=> Geo, VDB from Polygon => SDF, Iso Offset => Fog Iso Offset 연기
Particle Fluid Surface
DOP Network VDB
smoke / fire / pyro
Pop Network 시뮬레이션
POP Object POP환경에 맞게 일반 파티클 시스템을 동적 오브젝트로 변환. POP Solver 타임스탭에 맞게 파티클을 업데이트 POP Source generates particles from geometry.
etc
후면 틴트: Display Options: Markers / Primitives / Tint Backfaces Display Options : Guids / Origin gnomon
Step
점 추가 | Add |
모델에서 점만 남기기 | |
점으로 선만들기 | |
선에 점을 추가하여 아치형으로 변경 | PolyBevel |
배우기
- 카피 파라메터
- 인스펙터 수정
- 디스플레이뷰 점사이즈/숫자
아치형
- 그리드 1x1 // 2-2
- 그룹 @P.y > 0
- 베벌 distance 0.5
- 퓨즈
체우기
- 중심축을 정해 transform해서 띄워주고
- mirror - reverse normal : No
- skin
스크립트
종류 | 확장자 | 기타 |
---|---|---|
Python | .py | |
VEX | .vlf/.vex | |
expressions | 느림 | |
HScript | 옛날꺼 |
VEX
-
VEX(
V
ectorEX
pressions) -
jtomori/vex_tutorial
-
에디터 설정
- Edit > Preference > Set External Text Editor
- VEXpression > 우클릭 > Expression > Edit in External Editor
- Visual Studio Code에 VEX 플러그인
// C:\Users\ (UserName) \Documents\houdini19.0\houdini.env
EDITOR = "C:\Users\(UserName)\AppData\Local\Programs\Microsoft VS Code\Code.exe"
-
절대로 point() 또는 prim() 표현식을 사용하지 마십시오(expressions). VEX 대응만 사용하십시오.
-
Attribute VOP
- Vex 시각화 그래프
-
Attribute Wrangle
- Vex 코딩
- Wrangle
- This is a very powerful, low-level node that lets experts who are familiar with VEX tweak attributes using code.
- https://english.stackexchange.com/questions/263712/what-does-come-on-lets-wrangle-up-the-cattle-mean
- 소나 말들 관리
type@attribute
- geometry sheet에서 확인 가능
i@myint = 5; // i | int
f@myfloat = 12.234; // f | float
u@myvector2 = {0.6, 0.5}; // u | float2
v@myvector = {1,2,3}; // v | float3
p@myquat = {0,0,0,1}; // p | float4
2@mymatrix2 = {1,2,3,4}; // 2 | float2x2
3@mymatrix3 = {1,2,3,4,5,6,7,8,9}; // 3 | float3x3
4@mymatrix4 = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; // 4 | float4x4
s@mystring = 'a string'; // s | string
d@mydict = {}; // d | dict
d@mydict['key'] = 'value';
i[]@connected_pts = neighbours(0, @ptnum); // i[] | int[] array
// 정의 후 @attribute 형태로 쓸 수 있다.
// { ... } 과 set( ... ) 는 동일.
https://sites.google.com/site/fujitarium/Houdini/sop/copy-sop
// https://www.sidefx.com/docs/houdini/vex/snippets.html
vector x0 = point(0, "P", @ptnum);
vector x1 = point(1, "P", @ptnum);
float dist = distance(x0, x1);
vector dir = normalize(x1 - x0);
vector next = x0 + dir * (dist / 2.0f);
@P = next;
@
@elemnum | 현재 element | @id |
@vtxnum | 현재 vertex (linear) | 흔히 말하는 버텍스 |
@ptnum | 현재 point | 포인트(중복된 포지션이 없다) |
@primnum | 현재 primitive | 단일 엔티티(면 or 구 ...) |
@numelem | 총 element 갯수 | |
@numvtx | 총 vertex 갯수 | |
@numpt | 총 point 갯수 | |
@numprim | 총 primitive 갯수 |
@Time | Float time ($T) |
@Frame | Float frame ($FF) // $F는 int frame |
@SimTime | Float simulation time ($ST), only present in DOP contexts. |
@SimFrame | Float simulation frame ($SF), only present in DOP contexts. |
@TimeInc | Float time step (1/$FPS) |
$VTX | vertexprimindex(0, @vtxnum); |
geometry attribute
@ | |||
---|---|---|---|
Geometry | id | int | A unique element ID |
name | string | 이름 | |
P | vector | 포지션 | |
N | vector | 노말 | |
v | vector | 속도 Velocity | |
piece | int | 조각 | |
pscale | float | Uniform scaling factor | |
scale | vector | Whereas pscale is a single uniform scaling factor in all axes | |
Rendering | uv | vector | UV |
Shader | Cd | vector | diffuse 색깔 |
Cs | vector | specular 색깔 | |
Cr | vector | reflect 색깔 | |
Ce | vector | emission 색깔 | |
Ct | vector | transmit 색깔 | |
Alpha | float | Alpha transparency override. The viewport uses this to set the alpha of OpenGL geometry. | |
rough | float | Roughness override. | |
fresnel | float | Fresnel coefficient override. | |
shadow | float | Shadow intensity override. | |
sbias | float | Shadow bias override. | |
Particle | orient | vector4 | Quaternion orientation of a particle |
up | vector | Represents the up vector of a particle’s local space | |
rot | vector4 | An additional offset-quaternion applied after all other attributes |
Expression
$BBX = relbbox(@P).x
$BBY = relbbox(@P).y
$BBZ = relbbox(@P).z
Expression Local Variables | |
---|---|
$PT | 포인트 번호 |
$PR | 프리미티브 번호 |
$CY | 현재 사본 번호 |
$TX,$TY,$TZ | 트랜스폼 |
$TX2,$TY2,$TZ2 | 두번째 입력에서 오는 포인트 위치 |
$NX,$NY,$NZ | 노말 |
$CR,$CG,$CB,$CA | 칼라 |
$VX,$VY,$VZ | 벨로시티 |
$BBX,$BBY,$BBZ | 바운딩 박스 내 점 위치(0 ~ 1) |
$CEX,$CEY,$CEZ | 기하학의 중심 |
$AGE | 파티클 수명(초) |
$LIFE | 파티클 수명(0 ~ 1) |
$XMIN,$XMAX,$YMIN,$YMAX,$ZMIN,$ZMAX | 경계 범위 |
$SIZEX,$SIZEY,$SIZEZ | 경계 크기 |
ch
- https://www.sidefx.com/docs/houdini/vex/functions/ch.html
파라미터 삭제시: More > Delete Spare Parameter
chf chi chv
chramp(channel,ramppos, time) | 조절 가능한 2차원 그래프 채널이 생긴다 |
Function
clamp(value, min, max) | |
fit(value, fromMin, fromMax, toMin, toMax) | |
point(geometry, attribute_name, pointnumber) | geometry는 입력 순서(0부터) |
포지션 - minpos(geometry, point) | point에서 geometry에 레이를 쐈을시 가장 먼저 닿는 부분의 포지션 |
포인트 - nearpoint(geometry, pt) | geometry에 있는 모든 point 중에서 pt와 가장 가까운 point의 번호 |
Vector getbbox_size(geometry) | Computes the size of the bounding box for the geometry. |
vector currP = @P;
// 현재 위치에서 1번 지오메트리와 맨 처음으로 마주치게될 포지션.
vector hittedP = minpos(1, currP);
// 현재 위치에서 1번 지오메트리에 있는 모든 포인트 중 가장 가까운 포인트번호.
int nearPointNumber = nearpoint(1, currP);
// 1번 지오메트리의 nearpointNumber의 _id값.
int id = point(1, "_id", nearPointNumber);
quaternion
vector4 orient = quaternion(maketransform(@N, @up));
vector euler = quaterniontoeuler(orient,XFORM_XYZ);
v@rot = degrees(euler);
// maketransform: https://www.sidefx.com/docs/houdini/vex/functions/maketransform.html
vector4 quaternion(matrix3 rotations)
vector4 quaternion(float angle, vector axis)
vector4 quaternion(vector angleaxis)
vector qrotate(vector4 quaternion, vector v)
vector degrees(vector nums_in_rads)
vector quaterniontoeuler(vector4 orient, int order)
vector4 slerp(vector4 q1, vector4 q2, float bias)
vector4 qmultiply(vector4 q1, vector4 q2)
Constant name | Rotation Order |
---|---|
XFORM_XYZ | Rotate order X, Y, Z |
XFORM_XZY | Rotate order X, Z, Y |
XFORM_YXZ | Rotate order Y, X, Z |
XFORM_YZX | Rotate order Y, Z, X |
XFORM_ZXY | Rotate order Z, X, Y |
XFORM_ZYX | Rotate order Z, Y, X |
Python
- https://jtomori.github.io/2022/2022-07-07.html
- https://www.sidefx.com/docs/houdini/hom/commandline.html#hython
Windows > Hscript Textport(Alt + Shift + T)
/ -> help otedit
otedit
REPLACED BY
- hou.ui.openTypePropertiesDialog()
## hython path
Linux: /opt/hfs19.0.657/bin/hython
Windows: C:\Program Files\Side Effects Software\Houdini 19.0.657\bin\hython3.7.exe
// setting.json
"python.autoComplete.extraPaths" : [
"C:/Program Files/Side Effects Software/Houdini 19.0.531/houdini/python3.7libs"
],
"python.autoComplete.preloadModules" : [
"hou"
],
"python. analysis.extraPaths" : [
"C:/Program Files/Side Effects Software/Houdini 19.0.531/houdini/python3.7libs"
]
- New Shelf...
- New Tool...
- Script
- New Tool...
import hou
obj = hou.node('/obj')
myGeo = obj.createNode('geo', 'myGeo')
box = myGeo.createNode('box', 'myBox')
# print(box.ascode())
box.parm('sizex').set(10)
selected = hou.selectedNodes() # tuple
selected[0].setInput(0, selected[1], 0)
import Pyside2 as ps
$N | 'npoints(0)-1 |
VAT
VAT | Vertex Animation Texture |
ROP | Render OPerator(for a Houdini ) |
C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5/otls/SideFX_Labs.hda
unity .meta | guid |
---|---|
VAT_RigidBodyDynamics.shadergraph.meta | 085ef3ec3a5a70d4790c0957d30c9f63 |
VAT_ParticleSprites.shadergraph.meta | 8bf13a6837d559049924774e12033384 |
VAT_DynamicRemeshing.shadergraph.meta | 19b419010e1004644affea18d0fc8dff |
VAT_SoftBodyDeformation.shadergraph.meta | 987a09a96b5f17d46a88a7c429d130d2 |
// SideFX_Labs.hda
parm {
name "mat_unity_soft"
label "Unity Soft Material"
type string
invisible
default {}
}
parm {
name "mat_unity_rigid"
label "Unity Rigid Material"
type string
invisible
default { }
}
parm {
name "mat_unity_fluid"
label "Unity Fluid Material"
type string
invisible
default { }
}
parm {
name "mat_unity_sprite"
label "Unity Sprite Material"
type string
invisible
default { }
}
// https://github.com/sideeffects/SideFXLabs/blob/Development/unity/shaders/URP_VAT3/package.json
"com.sidefx.vat": "https://github.com/sideeffects/SideFXLabs.git?path=unity/shaders/URP_VAT3#Development"
그대로 | 변함 | ex | ||
---|---|---|---|---|
Soft | Constant Topology | 정점 갯수 | 위치 | 캐릭터 애니메이션 |
Rigid | Rigid Body Topology | 메쉬 형태 | 메쉬 위치 | 파괴 |
Fluid | Changing Topology | 정점 위치, 정점 갯수 | 유체 | |
Sprite | Camera Facing Cards | 파티클 |
[Project]/meshes/[Component]_mesh.fbx | mesh |
[Project]/textures/[Component]_pos.exr | position |
[Project]/textures/[Component]_norm.exr | normal |
[Project]/textures/[Component]_rot.exr | rotation |
[Project]/textures/[Component]_col.exr | color |
[Project]/materials/[Component]_data.json |
Mesh Settings | Turn every toggle off. |
---|---|
Preserve Hierarchy | On |
Sort Hierarchy By Name | On |
Mesh Compression | Off |
Optimize Mesh | Nothing |
Index Format | Auto |
Normals | Import |
Normals Mode | Area And Angle Weighted |
Smoothness Source | Prefer Smoothing Groups (or whatever you prefer) |
Smoothing Angle | 60 (or whatever you prefer) |
Tangents | Import |
Texture Settings | Turn every toggle off. |
---|---|
Texture Type | Default. |
Texture Shape | 2D. |
Alpha Source | Input Texture Alpha. |
Non-Power of 2 | None. |
Wrap Mode | Repeat. |
Filter Mode | Point (no filter). |
Override | For Windows, Mac, Linux: On. |
---|---|
Max Size | 8192 |
Resize Algorithm | Mitchell. |
Format | RGBA Half (16 bit per channel; HDR or even Non-HDR) |
RGBA 32 bit (8 bit per channel; Non-HDR). |
Rigidbody
Geo
Sphere
RDB Material Fracture
UV Unwrap
Assemble
RBD Bullet Solver
- Transfer Attributes: orient pivot P
- Transfer to Geometry: checked ???
- Transfer to Proxy Geometry: unchecked ???
Out
Mode/Target Engine: Rigid-Body Dynamics(Rigid) / Unity
Settings
Edge Case Handling
Input Geometry Is Cached to Integer Frames: checked
Texture Format: HDR(EXR/TIFF as RGBA 16/32 in Engine)
REF
- https://qiita.com/yasuhiro0122/items/1222b61549891af6c2f4
- https://medium.com/tech-at-wildlife-studios/texture-animation-techniques-1daecb316657
랜드스케이프
-
HoudiniXUE4 활용하여 랜드스케이프에 어셋 배치하기
-
node
- HeightField - 지형에 쓸 기본 높이맵
- HeightField Noise // noise type
- HeightField Distort // noise type
- HeightField Resample - resolution scale을 지정해줄 수 있어 terrain 의 디테일을 올리거나 내릴 수 있다.
- HeightField Blur
- HeightField Project // Combine Method
-
에픽 라이브 | 언리얼 엔진 이펙트에 후디니 활용하기
Unity
-
sidefx
-
유니티 엔진에서 후디니 엔진과 통신하는 것이므로 에디트모드일때만 동작한다.
-
https://www.sidefx.com/docs/houdini/unity/attributes.html
-
https://www.sidefx.com/docs/houdini/unity/meshes.html
-
https://www.sidefx.com/docs/houdini/unity/instancing.html
attr | |
---|---|
unity_instance | point찍고 attr에 프리팝 경로 입력하면 알아서 생성해줌 |
Learn > Learning Paths > Unity
START HERE
- UNITY STARTER KIT
- 여러 툴들 소계
- GETTING STARTED WITH HOUDINI ENGINE FOR UNITY
- 육각형 지형, HDA 생성, unity_instance
- Attribute Create
- Attribute Randomize
- HOUDINI ENGINE FOR UNITY | INSTANCING & VARIATION
- Scatter and Align 로 뿌려넣고 unity_instance로 소환
- Attribute Randomize
- Options / Global Seed
- Parameter Description / Type: String / Tags / TagName: heuassetpath 로 엔진파라미터로 프리팹 받을 수 있도록 설정.
- HOUDINI ENGINE FOR UNITY | SESSION SYNC
- https://www.sidefx.com/docs/houdini/ref/panes/enginesessionsync.html
- Houdini > New Pane Tab Type > Misc > Houdini Engine SessionSync > Start
- Unity > Houdini Engine > Session Sync > Connect to Houdini
- 유니티에서 hda 불러오면, 후디니에서도 보기 가능
- 유니티에서 New Node를 생성하면, 후디니에서도 생성됨. 후디니에서 편집가능.
- 유니티에서 Save Node로 저장하면 .hess(
H
oudiniE
ngineS
essionS
ync) - 유니티에서 Load NodeSync로 불러오기 가능.
- 유니티에서 Save Node로 저장하면 .hess(
- GAMES QUICKSTART
- 간단한 모델링, 그루핑, 어트리뷰트, HDA, Curve
- Desktop 설정
- 단축키 C
- node
- Poly Extrude
- Poly Bevel
- Poly Split
- Bend
- Edit
- Fuse
- Resample
- Copy To Point
- Orientation Along Curve // Curve에서 각도 유지
- 파라미터 조정을 통해 사슬과 같은 효과를 낼 수 있다.
- Copy To Curve == Orientation Along Curve + Copy To Point
- Draw Curve // 축 기반으로 그리거나, 매쉬에 그릴 수 있음.
- Match Size // 중점 이동
- Trace // Traces curves from an image file or heightfield.
- Group
- Group
- Group by Range // with Tube, Poly Extrude
- Group Combine
- Group Promote
- Attribute
- Attribute Create
- Attribute Noise // Cd, scale, N, pscale
- Attribute Randomize
- Attribute Promote
- 6 | MAKE GAME-READY ASSETS
- 1
- File
- Labs Game Res // Reduce, Auto UV, Bake
- ROP FBX Output
- 2
- Poly Reduce
- Auto UV
- Soften Normals
- Labs Map Baker
- 블록 모서리 깍인 효과
- Attribute Noise - pscale
- Poly Bevel
- Ignore Flat Edges
- Scale By Attribute
- 1
- HOUDINI DIGITAL ASSETS
- 사슬
- Draw Curve - Resample - CopyToCurve
- Apply Yaw
- Yaw: 90
- Apply Roll or Twist
- Full Twists: 7
- Apply Yaw
- Draw Curve - Resample - CopyToCurve
- 팬스
- 노드
- output, color
- Point Jitter로 변형 (crooked)
- Poly Bevel - Round
- Attribute Noise - scale 로 높이조정
- Attribute Noise - N 로 흩으러짐(회전) 효과
- Distance Along Geometry
- Output Mask로 Ramp값을 할당
- Attribute VOP
- Import Point Attribute - mask
- 변형주고 scale에 할당.
- Labs Color Gradient로 y축 기반 색상 지정.
- Copy To Curve
- Target Type: Next Edge로 이어진 팬스
- Target Up Vector 조절로 뒤집힘 방지.
- HDA
- Parameter
- Match Current Definition
- vex: ch
- 노드
- Type Properties > Node > Guide Geometry
- 가이드라인으로 와이어 프레임으로 보여짐.
- Switch추가로 Toggle하여 사용
- 사슬
Sci Fi Level Design
SCI FI PANEL GENERATOR
- PART 1 | MODELING THE PANEL
- PSD를 읽어 모델에 반영
- GameDev Trace PSD File 노드
- 레이어 및 Brightness Threshold 지정 가능
- Split으로 그룹을 일단 나누고.
- Blaster로 PSDLayerNumber 분리
- @PSDLayerNumber=1 // Delete Non Selected
- GameDev Thicken
- GameDev Axis Align
- 원통의 Bound를 구하고 Blast로 옆면을 때 Fuse로 중앙 점을 찾음
- Attribute Randomize로 index를 설정하고
- Copy - Stamp - Stamp Input 체크 및 Attribute Stamps에 index ?? 스탬프가 뭘까?
- Switch 쪽에서 stamp("../copy1", "index", 0)
- Create Meta Import Node
- iteration, numiterations, value, ivalue
- Attribute Randomize의 Seed에
- detail("../repeat_begin1_metadata1/", "iteration", 0)
- rand(detail("../repeat_begin1_metadata1/", "iteration", 0) + $F)
- Assemble : 매쉬 정리
- Create Packed Geometry
- Blast로 원하는거 몇개 골라서 @P.z > 5
- Unpack
- For-Each Connected Pieces
- Transform
- Pivot Translate : $CEX, $CEY, $CEZ (영상에선 preset 활용했음)
- Scale: 1, 0, 0
- Scatter로 랜덤하게 좀 뿌려주고
- Seed: detail("../repeat_begin1_metadata1/", "iteration", 0)
- Fuse로 붙어있는거 좀 정리해주고
- Create Meta Import Node
- 새로운 갈래
- Transform
- Translate : - $CEX, - $CEY, - $CEZ
- Scale: 0.1, 1, 1
- Pivot Translate : $CEX, $CEY, $CEZ (영상에선 preset 활용했음)
- PolyBevel로 볼트처럼 만들고
- Transform
- Copy To Point
- 볼트 종류는 Switch로 (switch2)
- Attribute Randomize에서
- Max Value: opninputs("../switch2/") - 1 : opninputs 인풋 갯수 반환
- Transform
- PART 2 | ADDING DETAIL
- GameDev Trace PSD File 노드
- Split으로 그룹을 일단 나누고. @Cd.r > 5 - Invert Selection
- 그룹1 - 선으로 면에 이음선 넣기
- GameDev Straight Skeleton 2D (Beta) / Facet / Fuse 로 선을 얻고 / Attribute Create N을 사이즈3. 값 0, 0, 1
- Sweep - Skin Unclosed으로 Line과 엮어서 판을 만듬.
- For-Each Connnected Piece
- Boolean Shatter
- Poly Bevel
- Attribute Delete - Cd
- 그룹2
- For-Each Connnected Piece
- Fuse
- Transform으로 위치를 올려서
- Ray 로 닿는 면과 달라붙도록 만듬.
- Attribute Randomize - N
- For-Each Connnected Piece
- 그룹1 - 선으로 면에 이음선 넣기
- Split으로 그룹을 일단 나누고. @Cd.r > 5 - Invert Selection
- 그냥 표면
- GameDev Voxel Mesh
- GameDev Measure Culvature
- Blast - @Cd > 0.2
- Group - Keep by Normals - 0, 1, 0
- Scatter
- 추가 작업
- GameDev Voxel Mesh - Resolution을 다르게 해서 high, low폴리 제작
- Lattice
- Poly Reduce
- Group - 0, -1, 0의 하단 패널 부분을 선택
- Blast
- GameDev Delete Small Parts
- 파이프
- Group - Include by Edge - Min Edge Angle을 조정하여 각진 부분만 그룹핑
- Poly Bevel
- Subdivide
- 파이프 클립
- Clip으로 파이프 전체가 아닌 단면만을 사용가능.
- 마무리
- GameDev Remove Inside Faces
- GameDev Auto UV - UV Unwrap
- GameDev Soften Normal - Harden UV Seams
- GameDev Trace PSD File 노드
- PART 3 | CREATING THE DIGITAL ASSET
- HDA 설정
SCI FI CRATE GENERATOR
- PART 1 | MODEL THE CRATE
- Box / GameDev Axis Align / Null(IN)
- Boolean - Shatter로 뚜껑을 구분지음 - A-Only Piece
- Grid - 0, bbox("../IN/", D_YSIZE) * 0.8
- IN_Part_01
- group / blast / polybevel / polyfill 로 윗단을 날리고 하단을 부드럽게 하고 윗단을 다시 채운다
Unreal
- UNREAL STARTER KIT
- 도시 샘플 퀵스타트 - Houdini를 사용해 도시와 고속도로 만들기
- 도시, 고속도로
- Project Titan
- 드래그 화물배치
- 파이프
- Houdini Engine to Unreal Engine Workflow
- 팬스
무료
https://learn.unity.com/project/getting-started-with-houdini-unity
- 독학.net
- TWA 후디니의 정석
- https://www.youtube.com/c/houdini3d/videos
- http://wordpress.discretization.de/geometryprocessingandapplicationsws19/2019/10/17/lecture-progress/
- 모팩
- https://anopara.gumroad.com/
- 후디니 유저인터페이스& 활용
- 강의 후기? : https://gall.dcinside.com/board/view/?id=composition3d&no=41343
- QuickTips Houdini 17: Visualize Pieces and Cluster with Voronoi Sops in Houdini 17
- Procedural Bridge with Houdini and Unreal Engine 4 (UE4) - Showcase
- Randomly generated procedural homes in Houdini tutorial
- [Houdini]간단한 Procedure UV
- Houdini/Ari Danesh(필수강좌)
- Houdini 30 Day Introduction to Python
- Foundation Module - The Foundation Project
Youtube Channel
- CGArtistAcademy
- LoveDo
- c0d2x
- MotionDesignersCommunityTV
- ResilientPictureCompany
- https://www.youtube.com/c/fxguide
- https://www.youtube.com/c/MIXTraining
- https://www.youtube.com/@rohandalvi
- Wagner’s Webinars: Houdini VEX
- cgside
P
-
- https://www.sidefx.com/profile/IndiePixel/
-
Simon Verstraete
- Simon is a tech Artist that loves building procedural tools and assets.
- https://www.youtube.com/@simonhoudini5074
- https://www.artstation.com/siver
-
Radu Cius
- https://www.youtube.com/@RaduCius
- https://www.artstation.com/raducius/store?tab=digital_product
- https://rart.gumroad.com/
책
- 후디니로 구현하는 알고리즘 디자인
- 원제 : ALGORITHMIC DESIGN WITH HOUDINI HOUDINIではじめる自然現象のデザイン 소득공제
- 책 부록 소스: https://vielbooks.com/294
유료
- 독학.net
- TWA 후디니의 정석
- 발차기
- cgstation
- fxphd
- ??
- Houdini Procedural Lake Houses
- https://www.pluralsight.com/courses/houdini-engine-unity-fundamentals
???
기타
- https://github.com/sideeffects/GameDevelopmentToolset
- https://github.com/wqaetly/HoudiniSamples
- https://houdinifx.jp/blog/gamedev-texture-sheet-%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/
- https://blog.naver.com/edgerider/220602291985
- https://microbot.ch/new/procedural-building-modules/
- https://blog.naver.com/marnich/221659754394
- https://www.orbolt.com/
- Create, upload, and share Houdini Digital Assets
etc2
-
cascadeur - deep learning pose predication tool
-
하운드13의 '프로젝트 M'의 처절한 전투를 표현하기 위한 언리얼 엔진 활용법 | 언리얼 서밋 2021
- 블러드 이펙트
-
언리얼 서밋 | 2020 | TA가 구현해본 대규모 캐릭터 시스템 - 1,000개의 캐릭터가 끊김없이 나오게 만들기
- 언리얼LOD생성 퀄리티가 낮아 LOD생성을 후디니에서 함
-
에픽 라이브 | 러셀 | UE5에서 한국적인 아파트 절차적으로 생성하기
- 번외 후디니가 아닌 블루프린트 만으로 절차적 생성
-
에픽 라이브 | 언리얼 엔진 이펙트에 후디니 활용하기
-
- 후디니 케릭터 모델링
GDC
Game Development Made Easy Using Houdini | Paul Ambrosiussen | GDC 2018
ref - Video games Created using Houdini
ehoudini
TA
- 점을 선으로 잇기: add> polygons> by group
- 선을 나누기 : resample
- 내부 선 지우기: add> points> Delete Geometry But Keep the Points
- Rigid body dynamics : RBD to FBX
- 감마: Edit> Color Settings> Color correction> Gamma> 1
- 각도설정
- copytopoint로 circle을 점에 붙인다
- carve의 U를 이용 각도를 가진 점을 얻고 - 포인트가 0부터 시작하는걸 변하게 하는게 좋을듯
- 점과 점을 merge
- add로 선을 이어주자 - polygons > By Group
- 어트리뷰트 비쥬얼라이제이션
- 포인트 번호 표시해주는 툴바에 visualization 우클릭
- 디버그용 선을 이어보기
- 어트리뷰트를 이용하여 정보용 점을 추가로 만들고
- merge
- Add> By Group> Add> By Attribute> Attribute Name 설정
- grid를 텍스쳐로 굽기
- https://blog.naver.com/checkjei/222622327344
- geo > grid / uvtexture / attribvop
- Material Palette
- Principled Shader 드래그
- 드래그된것 우클릭 파라미터 편집 색 조정및 기타 러프니스등 조정
- Network view 탭에서 out
- baketexture 노드 생성
- UV Object1에 geo노드 등록
- Surface Unlit Base Color (basecolor) 선택
- Render to Disk 버튼 클릭