들어가며

  • 후디니SideFx사에서 만든 노드 기반 모델링 툴로써 절차적 모델링이 가능하다

조작키

Overview

마우스좌클릭 + 이동선택
우클릭 + 이동
휠클릭 + 이동뷰 잡아서 이동
ALT 좌클릭 + 이동복제
Enter핸들 보여주기 ( 노드 별 다름 )
뷰모드Space토글 / 누른채로도 유지 가능
F오브젝트 포커스
WWire 프레임
D옵션 - Display Option
Y고스트 오브젝트 하이드 토글
Ctrl + B뷰포트 전체화면
Space + B뷰포트 4분할 (씬 뷰)
Space + G오브젝트 중심으로 줌
Ctrl + J토글 멀티 스냅핑
선택모드S토글
T움직임(Translate)
R회전(Rotate)
E스케일(scalE)
1Select - Object
2Select - Point
3Select - Edge
4Select - Primitive
드래그선택
Shift + 드래그선택 - 추가
Ctrl + 드래그선택 - 해제
카메라 모드ESCView Tool
Viewport1Viewport - perspective
2Viewport - Top
3Viewport - Front
4Viewport - Right
5Viewport - UV
CTRL + 1,2,3,4,5,6,7,8Viewport - 분할뷰
PaneCTRL + WPane 닫기
PaneCTRL + BPane 최대/최소화
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프로퍼티 보기
Uup 상위 노드로 이동
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 + LLayout 정렬
Shift + Z그룹보기
Shift + ONetwork Box
Shift + PSticky 노트
Ctrl + IBackground 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
$HIPhip 파일이 저장된 절대경로
$JOBproject 절대경로
HOUDINI_OTLSCAN_PATH
Aliases and Variables...Alt+Shift+V

단축키

Edit > Hotkeys
Copy Parameter/Houdini/Panes/Parameter Fields and LabelsCtrl+Shift+C
Copy Parameters/Houdini/Panes/Parameter SpreadsheetCtrl+Shift+C
Paste Copied Relative RefsCtrl+Shift+V

색상조정

  • 후디니> Edit > Color Setting > Color collection 확인

파일

분류확장자명설명LICENSE
씬파일.hipHoudini Independent Package
.hiplcHoudini Independent Package Limited CommercialINDIE
.hipncHoudini Independent Package Non-CommercialEDUCATION / APPRENTICE
에셋.hdaHoudini Digital Assets
.hdalcHoudini Digital Assets Limited CommercialINDIE
.hipncHoudini Digital Assets Non-CommercialEDUCATION / APPRENTICE
세션.hessHoudini Engine SessionSync
  • 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
APPRENTICEX

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가 아닌 해당 노드만 수정함)

Geometry Node

노드
Add점 추가 // 모델에서 점만 남기기, 점으로 선만들기
EndsFace/Hull 탭과 같은 기능입니다
PeakPeak 노드는 프리미티브/포인트/에지/브레이크 포인트를 법선 방향으로 이동합니다
Transform트랜스폼 - 전체/그룹
Edit트렌스폼 - 컴포넌트 단위
Delete지우기 - 기능 더 많음
Blast지우기 - 간단한
PolyExtrude밀어내기(extrude), 그룹핑 가능
PolyBevel비스듬한면(bevel), 선에 점을 추가하여 아치형으로 변경
PolyPath이어진 여러 라인을 하나의 라인으로 만듬
PolyFrameTangentName에 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교집 - 교집합/합집합
Clipclipping - 자르는거
ROP Geometry Ouput캐쉬 - 생성 $HIP/geo/$OS.bgeo.sc // $OS. Operator String 노드이름
File캐쉬 - 불러오기
File Cache캐쉬 - 생성 / 불러오기 - 기능이 2개라 햇갈려서 잘 쓰지 않음
Attribute CreateAttribute - 생성 // 그룹에 대한 attribute 생성도 가능 // $PR 할당할때
Attribute from MapAttribute - 이미지로부터 attribute를 가져옴
Attribute PromoteAttribute - 포인트 어트리뷰트를 프리미티브 어트리뷰트로 변환하는것 처럼 서로 다른 클래스로 어트리뷰트 전환이 가능
Attribute TransferAttribute - 이전. 가까이 있는 Attribute를 가져온다
Attribute RandomizeAttribute - 랜덤화
Attribute VOPAttribute - 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좌우 대칭
Foreachhttps://www.youtube.com/watch?v=xs5WezgOZlo
Platonic SolidsTetrahedron(4)/Cube(6)/Octahedron(8)/Icosahedron(20)/Dodecahedron(12)/Soccer ball(pentagonal b12 + w20)/Utah teapot
Iso OffsetBuilds an offset surface from geometry. // 볼륨변환 // Scatter랑 같이 쓰이기도함
Convert지오메트리 - 기하학을 변환(ex 폴리곤화) // LOD
Remesh지오메트리 - 메쉬 늘리기/줄이기
Facet지오메트리 - 점 또는 표면 법선을 통합
Fuse각 포인트들을 거리나 Snap에 따라 합치기. 프리미티브 가운데 찾기. Normal 다시 계산하는게 기본이므로 주의
linear taper오므라들게
Match SizeResizes and recenters the input geometry to match a reference bounding box.
Skin두 표면사이에 스킨을 씌워준다. // Keep primitives 로 원래 모양도 유지가능
SortPoint 나 Primitive를 정렬. Shaft/Offset을 이용 오프셋 작업 가능Ï
Convert Line포인트끼리 연결한 라인
Revolve중심 축을 중심으로 곡선을 회전하여 표면을 만듬
Object Merge외부 노드 불러오기
Visualize AttributeAttribute 기반 시각화
DivideDon't Generate Slivers/Avoid Small Angles 동시 체크 추천
Clean
Pack게임엔진에서 별도의 메쉬로 취급
Unique Points/Point SplitSplits points shared by multiple vertices, optionally only if the vertices differ in attribute value. / PolyWire랑 쓰면 좋음

Curve같은 경우 Assets > Asset Definition Toolbar > Show Always 로 이전 버전의 curve를 사용할 수 있다.

UV
UV QuickShade평면 // grid 한장
UV Project프로젝션 기법을 이용하여 UV 전개
UV Unwrap자동 uv 평탄화 및 구릅핑
UV Texture평면은 물론, 구형이나 원통형을 UV 전개
UV Flattenflattening constraints// Seam(이음매), Rectify(바로잡다)
UV Layoutuv 그룹 배치
AutoUVSideFXLab 에 통합됨
Labs UV VisualizeUV 시각화
foreach
iteration0, 1, 2 ...
numiterations1, 2, 3 ...
ivaluestart + increment * iteration
valuestart + 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

// C:\Users\ (UserName) \Documents\houdini19.0\houdini.env
EDITOR = "C:\Users\(UserName)\AppData\Local\Programs\Microsoft VS Code\Code.exe"
  • 절대로 point() 또는 prim() 표현식을 사용하지 마십시오(expressions). VEX 대응만 사용하십시오.

  • https://www.tokeru.com/cgwiki/?title=HoudiniVex

  • https://www.sidefx.com/learn/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 갯수
@TimeFloat time ($T)
@FrameFloat frame ($FF) // $F는 int frame
@SimTimeFloat simulation time ($ST), only present in DOP contexts.
@SimFrameFloat simulation frame ($SF), only present in DOP contexts.
@TimeIncFloat time step (1/$FPS)
$VTXvertexprimindex(0, @vtxnum);

geometry attribute

@
GeometryidintA unique element ID
namestring이름
Pvector포지션
Nvector노말
vvector속도 Velocity
pieceint조각
pscalefloatUniform scaling factor
scalevectorWhereas pscale is a single uniform scaling factor in all axes
RenderinguvvectorUV
ShaderCdvectordiffuse 색깔
Csvectorspecular 색깔
Crvectorreflect 색깔
Cevectoremission 색깔
Ctvectortransmit 색깔
AlphafloatAlpha transparency override. The viewport uses this to set the alpha of OpenGL geometry.
roughfloatRoughness override.
fresnelfloatFresnel coefficient override.
shadowfloatShadow intensity override.
sbiasfloatShadow bias override.
Particleorientvector4Quaternion orientation of a particle
upvectorRepresents the up vector of a particle’s local space
rotvector4An 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 nameRotation Order
XFORM_XYZRotate order X, Y, Z
XFORM_XZYRotate order X, Z, Y
XFORM_YXZRotate order Y, X, Z
XFORM_YZXRotate order Y, Z, X
XFORM_ZXYRotate order Z, X, Y
XFORM_ZYXRotate order Z, Y, X

Python


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

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

VATVertex Animation Texture
ROPRender OPerator(for a Houdini )

C:/Program Files/Side Effects Software/sidefx_packages/SideFXLabs19.5/otls/SideFX_Labs.hda

unity .metaguid
VAT_RigidBodyDynamics.shadergraph.meta085ef3ec3a5a70d4790c0957d30c9f63
VAT_ParticleSprites.shadergraph.meta8bf13a6837d559049924774e12033384
VAT_DynamicRemeshing.shadergraph.meta19b419010e1004644affea18d0fc8dff
VAT_SoftBodyDeformation.shadergraph.meta987a09a96b5f17d46a88a7c429d130d2
// 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
SoftConstant Topology정점 갯수위치캐릭터 애니메이션
RigidRigid Body Topology메쉬 형태메쉬 위치파괴
FluidChanging Topology정점 위치, 정점 갯수유체
SpriteCamera Facing Cards파티클
[Project]/meshes/[Component]_mesh.fbxmesh
[Project]/textures/[Component]_pos.exrposition
[Project]/textures/[Component]_norm.exrnormal
[Project]/textures/[Component]_rot.exrrotation
[Project]/textures/[Component]_col.exrcolor
[Project]/materials/[Component]_data.json
Mesh SettingsTurn every toggle off.
Preserve HierarchyOn
Sort Hierarchy By NameOn
Mesh CompressionOff
Optimize MeshNothing
Index FormatAuto
NormalsImport
Normals ModeArea And Angle Weighted
Smoothness SourcePrefer Smoothing Groups (or whatever you prefer)
Smoothing Angle60 (or whatever you prefer)
TangentsImport
Texture SettingsTurn every toggle off.
Texture TypeDefault.
Texture Shape2D.
Alpha SourceInput Texture Alpha.
Non-Power of 2None.
Wrap ModeRepeat.
Filter ModePoint (no filter).
OverrideFor Windows, Mac, Linux: On.
Max Size8192
Resize AlgorithmMitchell.
FormatRGBA 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

랜드스케이프

  • HoudiniXUE4 활용하여 랜드스케이프에 어셋 배치하기

  • node

    • HeightField - 지형에 쓸 기본 높이맵
    • HeightField Noise // noise type
    • HeightField Distort // noise type
    • HeightField Resample - resolution scale을 지정해줄 수 있어 terrain 의 디테일을 올리거나 내릴 수 있다.
    • HeightField Blur
    • HeightField Project // Combine Method
  • 에픽 라이브 | 언리얼 엔진 이펙트에 후디니 활용하기

Unity

attr
unity_instancepoint찍고 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(Houdini Engine SessionSync)
      • 유니티에서 Load NodeSync로 불러오기 가능.
  • 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
  • HOUDINI DIGITAL ASSETS
    • 사슬
      • Draw Curve - Resample - CopyToCurve
        • Apply Yaw
          • Yaw: 90
        • Apply Roll or Twist
          • Full Twists: 7
    • 팬스
      • 노드
        • 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로 볼트처럼 만들고
      • Copy To Point
      • 볼트 종류는 Switch로 (switch2)
      • Attribute Randomize에서
        • Max Value: opninputs("../switch2/") - 1 : opninputs 인풋 갯수 반환
  • 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
    • 그냥 표면
      • 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
  • 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

무료

https://learn.unity.com/project/getting-started-with-houdini-unity

Youtube Channel

P

  • IndiePixel3D

    • 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/

유료

???

기타

etc2

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 버튼 클릭

플러그인