Learning Paths

  • 튜토리얼이 vimeo로 된게 많은데 느릴시 CDN Priority 조정
    • https://player.vimeo.com/flags?p=general

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 로 윗단을 날리고 하단을 부드럽게 하고 윗단을 다시 채운다

Guard Tower

  • made in Houdini 16.5 for Beginner by Kenny Lammers

  • https://www.sidefx.com/learn/collections/guard-tower/

  • https://www.sidefx.com/media/uploads/tutorial/indiepixel/guard_tower_project_files.zip

  • 좋았던점

    • 나이태 부분
    • 볼트의 우둘투둘한 부분
    • 콜리전 영역만들기

GROUND PART

  • GUARD TOWER 1 | GROUND PART 1 | CREATING THE GROUND ASSET
    • hda 만들기 : grid - uvflatten
  • GUARD TOWER 1 | GROUND PART 2 | ADDING NOISE TO THE GROUND
    • mountain 적용
    • Point VOP로 Noise를 주고 Cd에 맵핑
      • shader에 lerp값으로 사용
  • GUARD TOWER 1 | GROUND PART 3 | ADDING MATERIALS WITH HOUDINI ENGINE
    • UV Transform
      • Scale
    • Attribute Create 로 머티리얼 지정가능
      • Name: unity_material
      • String: Assets/Gaurd_Tower/Art/Shared_Textures/Ground/Blend_Materials/Ground_Blended_MAT.mat
      • Unity 에디터 > Houdini Engine > Plugin Settings > ADVANCED > Unity Material Attribute : unity_material (기본값)

WOOD WALL PART

  • GUARD TOWER 2 | WOOD WALL PART 1 | CREATING A WOOD PLANK
    • Box
    • Group
      • Group Name : $OS
        • $OS : Operator String. Contains the current OP’s name. 노드 이름
        • H20.5 Legacy Preset > Save As Permanent Defaults
    • Attribute Randomize
    • Poly Bevel
      • Offsetting
        • Distance : Scale By Attribute
        • Point Offset Scale : randbevel
    • Point
      • Attribute: Normal(N)
      • VExpression: set(0, 0, 1)
    • Mountain
    • Point
      • Attribute: Normal(N)
      • VExpression: set(0, 1, 0)
    • Mountain
    • UV Flatten
    • UV Layout
    • Normal
      • Cusp Angle 을 조절해서 하드/소프트 한 느낌 조정
  • GUARD TOWER 2 | WOOD WALL PART 2 | ASSEMBLING THE WOOD WALL
    • Type Properties > Tools > Context > TAB Submenu Path : Shape Utils/
    • 만들어진 hda가지고 위로 Copy
      • Translate.y : bbox("../gt_wood_plank_shape1/", D_YSIZE)
    • 옆으로 Copy
    • Offset용 Transform
    • Clip: Keep Primitive Above the Plane
    • Clip: Keep Primitive Below the Plane
  • GUARD TOWER 2 | WOOD WALL PART 3 | CREATING THE WALL POSTS
    • Transform
      • Translate.y : -bbox("../gt_wood_plank_shape1/", D_YMIN)
    • Transform
      • Translate.z : -bbox("../gt_wood_plank_shape1/", D_ZSIZE) * 0.5
    • 기타
      • Box
        • Center.y : ch("sizey") * 0.5
  • GUARD TOWER 2 | WOOD WALL PART 4 | PLACING POSTS
    • Line
      • Origin.x : -ch("dist") * 0.5
      • Length : bbox("../wall_copy", D_XSIZE)
    • Carve 로 지지대 새울 위치 조정
      • Second U : 1 - ch("domainu1")
    • Transform
      • Translate.z : bbox("../wall_copy", D_ZMAX) + bbox("gt_wood_post_shape1/", D_ZSIZE) * 0.5
    • Copy To Point
  • GUARD TOWER 2 | WOOD WALL PART 5 | CREATING BOLTS FOR THE WALL
    • Tube (Polygon)
      • Center.y : ch("height") * 0.5
    • 튜브 2개로 볼트만듬
  • GUARD TOWER 2 | WOOD WALL PART 6 | PLACING THE BOLTS
    • 라인 활용 post에 ray를 쏴서 bolt를 Copy To Point
  • GUARD TOWER 2 | WOOD WALL PART 7 | VARIATION WITH COPIES
    • foreach
      • Create Meta Import Node
        • detail("../plank_loop_data/", "iteration", 0)
  • GUARD TOWER 2 | WOOD WALL PART 8 | HI RES DISPLACEMENT
    • high res 모델링
    • Object Merge로 불러오고
    • Blast로 영역 구분
    • Wall 나이테
      • VDB From Polygon
        • Voxel Size : 0.002
      • Convert VDB (Polygon)
      • Point VOP
        • Vein 으로 나무 나이테 효과
          • Vein Spacing : 6
          • Vein Attenuation: 1.5
          • Vein Frequency : 5
          • Noise Frequency : 0.5 / 4 / 2
        • Display Among Normal 에 연결
          • Scale : -0.005
      • Bolt 모퉁이
        • VDB From Polygon
          • Voxel Size : 0.002
        • Convert VDB (Polygon)
        • Labs Measure Curvature
          • 곡률(Culvature)을 구하고 후에 VOP를 이용 변화량에 맞게 노이즈 적용할거임
          • r은 모퉁이가 될 것이고
          • g는 접합부가 될꺼임
        • Point VOP
          • Anti-Aliased Noise
            • 3D Frequency : 1.5
            • Roughness : 0.6
          • (Cd.r * Tubulent Noise) + Anti-Aliased Noise 계산하고
          • Display Among Normal 에 연결
            • Scale : 0.01
  • GUARD TOWER 2 | WOOD WALL PART 9 | HIGH RESOLUTION POSTS
    • Post 기둥에 나이테효과주기.
      • 윗단계처럼 옆면에 나이테 효과 주고
      • 상단은 원형 나이테를 만들어주자
      • Group - tops
        • Keep in Bounding Region으로 윗 영역만 잡아주고
      • Group Combine
        • left랑 tops를 intersect해서 lefttop을 만듬
      • Smooth
      • Point VOP
        • (Turbulent Noise + P.xz) => ripple => Cd
      • Attribute Blur
        • Cd
      • @P.y += @Cd.r * chf("Scale")
  • GUARD TOWER 2 | WOOD WALL PART 10 | BAKING TEXTURES IN HOUDINI
    • 벽/기둥/나사에 색깔을 입히고
    • Object Merge로 Low/High을 불러오고 Low, High순서로
    • Labs Simple Baker
  • GUARD TOWER 2 | WOOD WALL PART 11 | LAYOUT THE WALL ASSET
    • curve로 영역을 만들고
    • Reverse
    • Attribute Wrangle(Point)
      • @P.x = rint(@P.x / 2) * 2;
      • @P.z = rint(@P.z / 2) * 2;
    • Resample
      • Length: 2
    • PolyFrame 면을 따라 Point Normal생성
      • Entity: Point
      • Style: First Edge
      • Normal Name : 체크 해제
      • Tangent Name : N
    • Group
      • allpts
    • PolyCut
      • Cut Points: allpts
      • Strategy: Cut
    • 그 다음으로 foreach - Blast (1) - Copy To Point해서 울타리를 쳐준다.
  • GUARD TOWER 2 | WOOD WALL PART 12 | COMPLETING THE WALL ASSET
    • 울타리의 봉우리 뚜껑을 만들어 준다
    • Curve 영역에서
    • Remesh
    • Group
      • Include By Edges
        • Enable
        • Unshared Edges
    • Color
    • Attribute Blur
      • Attributes : Cd
    • Point Wrangle
      • @P.y += @Cd.r * chf("Shape");
    • Normal
    • Point VOP
      • @Cd.r * Turbulent Noise => Displace Along Normal => @P
  • GUARD TOWER 2 | WOOD WALL PART 13 | SETTING UP THE WALL ASSET IN UNITY
    • HDA설정
    • Type Properties
      • Operator Path
        • Name : wallmodel
        • Op Filter : Any SOP
      • Operator Path
        • Name : usercurve
        • Op Filter : Any SOP
    • Object Merge
      • Object 1 : chsop("../wallmodel")
    • Object Merge
      • Object 1 : chsop("../usercurve")
    • 유니티에서
      • UNITY_MESH
      • HDA
        • Unity 에디터 > Houdini Engine > New Curve Asset
          • Reverse

Sandbag Part

  • GUARD TOWER 3 | SANDBAG PART 1 | CREATING THE SANDBAG ASSET
    • Subdivide
    • Sculpt
    • Soft Peak
      • 코너 부분만 그룹으로 잡아서
    • Smooth
    • UV Flatten
      • Flatting Contrains
        • Seams에 가운데 가로로 빙둘러싼 엣지를 선택하고
    • UV Layout
    • Normal
  • GUARD TOWER 3 | SANDBAG PART 2 | CREATING THE SANDBAG WALL PATTERN
    • Labs Edge Group To Curve
      • Group은 가운데 가로로 빙둘러싼 엣지를 선택하여 샌드백의 봉제선 모양을 만들어주자
      • Thickness
        • Thicken을 선택해서
    • 그 다음으로 High res버전
      • VDB From Polygons
      • Convert VDB
      • Point VOP
        • @P.xz => Boxes => Displace Among Normal => @P
      • Smooth
    • 앞서만든 모래주머니로 울타리
      • 앞에서 만든것 처럼 영역만들고 모래주머니 단을 만들어주자
      • Foreach
        • Resample
        • Point Jitter
        • PolyFrame
          • Tangent Name : N
        • Copy And Transform으로 단을 쌓을 포인트들을 만들어주고
          • Copy Number Attribute : copynum
        • Attribute Promote
          • Original Name : copynum
          • Original Class : Primitive
          • New Class : Point
          • Promotion Method : Maximum
        • Point Wrangle
          • 지그제그 효과
          • int id = @copynum / 2;
          • if (id > 2) { @P += @N * chf("offset"); }
          • @P += @N * chf("push");
      • Foreach
        • Copy To Point로 모래주머니를 쌓자
  • GUARD TOWER 3 | SANDBAG PART 3 | CREATING THE SANDBAG WALL ASSET
    • HDA설정
    • Type Properties
      • Operator Path
  • GUARD TOWER 3 | SANDBAG PART 4 | COMPLETING THE SANDBAG WALL
    • 유니티에 배치
    • 샌드백 벽에 Labs Calculate Occlusion을 추가해서 Cd에 오쿨루젼 정보를 추가

LADDER PART

  • GUARD TOWER 4 | LADDER PART 1 | BUILDING A LADDER
  • GUARD TOWER 4 | LADDER PART 2 | CREATING THE LADDER DIGITAL ASSET
  • GUARD TOWER 4 | LADDER PART 3 | LADDER TRANSFORM FIX
    • pass
  • GUARD TOWER 4 | LADDER PART 4 | COMPLETING THE LADDER
    • Group 유니티에서 컬리전
      • Group Name: collision_geo

Tower Part

  • GUARD TOWER 5 | TOWER PART 1 | BUILDING THE BASE
  • GUARD TOWER 5 | TOWER PART 2 | BUILDING THE TOWER HOUSE
    • pass

OilBarrel Part

  • The Barrel is in there: https://www.dropbox.com/sh/1ck8tiizis73gnf/AAB5C0YzLlSd9UbVs21xsLVAa?dl=0

  • GUARD TOWER 6 | OILBARREL PART 1 | BUILDING THE OIL BARREL

    • pass
  • GUARD TOWER 6 | OIL BARREL PART 2 | BARREL STACKING

    • 여기서는 컬리젼 영역을 만들려고
      • VDB From Polygon
      • Convert VDB
      • Tetrahedralize( Convex Hull ) 노드를 쓰는데 해당 노드는 16.0 부터 지원을 안한다
      • 대신 Shrinkwrap 를 쓰면 동일한 결과를 얻을 수 있다.