Chapter 39ē„”ę–™å…¬é–‹

šŸ ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾

恋悂恝恰
恋悂恝恰
2021.04.11恫ꛓꖰ
ć“ć®ćƒćƒ£ćƒ—ć‚æćƒ¼ć®ē›®ę¬”
  1. ć‚µćƒ³ćƒ—ćƒ«ćƒ‡ćƒ¼ć‚æ
  2. ē”Øę„ć™ć‚‹ć‚‚ć®
  3. ShaderGraph恮čح定
  4. ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć®ä½œęˆ
    1. ꉋ順1 : 惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®äŗŒå€¤åŒ–
    2. ēµęžœ
    3. ꉋ順2 : ćƒ¢ćƒ‡ćƒ«ć‚’å‰Šć‚‹
    4. ēµęžœ
    5. ꉋ順3 : ćƒ•ćƒć‚’å…‰ć‚‰ć›ć‚‹
    6. ćƒ•ćƒć‚’å…‰ć‚‰ć›ć‚‹
    7. ēµęžœ
  5. 問锌ē‚¹ : Clip Time = 1ć«ć—ćŸćØćć«å‰Šć‚ŒćŒę®‹ć‚‹
    1. ćƒ”ćƒƒć‚·ćƒ„ćŒå‰Šć‚Œćć‚Œćšć«ę®‹ć£ć¦ć—ć¾ć†ē†ē”±
    2. Clip Time = 1 ć§å®Œå…Øć«å‰Šć‚‹
    3. ShaderGraph
    4. ēµęžœ
  6. åæœē”Ø : ē‡ƒćˆć‚‹ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾
    1. Ramp惆ć‚Æć‚¹ćƒćƒ£
    2. ć‚°ćƒ©ćƒ•
    3. ShaderGraphå…Ø体
    4. 要ē“ 01 : ć‚«ćƒ©ćƒ¼ć‚°ćƒ©ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć®å¤‰åŒ–
    5. å®Ÿéš›ć®å¤‰åŒ–
    6. 要ē“ 02: ć‚°ćƒ©ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć®ćƒžć‚¹ć‚Æ
    7. å®Ÿéš›ć®å¤‰åŒ–
    8. 要ē“ 01 Ɨ 要ē“ 02
    9. å®Ÿéš›ć®å¤‰åŒ–
    10. 要ē“ 03 : ćƒ”ćƒƒć‚·ćƒ„å‰Šć‚Œ
    11. å®Ÿéš›ć®å¤‰åŒ–
    12. 要ē“ 01 Ɨ 要ē“ 02 Ɨ 要ē“ 03 (å®Œęˆ)
  7. 惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®ä½œęˆ (Houdini)
    1. ä½æē”Øćƒ„ćƒ¼ćƒ«
    2. Houdini恧惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć‚’ä½œć‚‹ćƒ”ćƒŖ惃惈
    3. 惍惃惈ćƒÆćƒ¼ć‚Æå…Ø体
    4. ćƒ”ćƒƒć‚·ćƒ„ć®ē“°åˆ†åŒ–
    5. Perlin Noise恮čح定
    6. 惎悤ć‚ŗēÆ„å›²ć‚’ 0 ~ 1 恫恙悋
    7. HoudiniäøŠć§ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć‚’ē¢ŗčŖć—恦ćæ悋
    8. 惆ć‚Æć‚¹ćƒćƒ£å‡ŗ力
    9. 惆ć‚Æć‚¹ćƒćƒ£ć®ć‚¤ćƒ³ćƒćƒ¼ćƒˆ (Unity)

ć“ć®ćƒćƒ£ćƒ—ć‚æćƒ¼ć§ćÆ态仄äø‹ć®ć‚ˆć†ćŖćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć‚’ä½œć‚‹ę–¹ę³•ć‚’ē“¹ä»‹ć—ć¾ć™ć€‚

ć‚µćƒ³ćƒ—ćƒ«ćƒ‡ćƒ¼ć‚æ

ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć®ć‚µćƒ³ćƒ—ćƒ«ćƒ‡ćƒ¼ć‚æćÆGitHubć«ć¦å…¬é–‹äø­ć§ć™

https://github.com/rngtm/ShaderGraphCookBookSample

Assets/_SampleData/ShaderSamples/11_Dissolve

ē”Øę„ć™ć‚‹ć‚‚ć®

  • 惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£
  • 3Dćƒ¢ćƒ‡ćƒ«

惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć‚’3Dćƒ¢ćƒ‡ćƒ«ć«č²¼ć‚Šä»˜ć‘ćŸéš›ć€ćƒŽć‚¤ć‚ŗćŒåć‚ŠćŖćč²¼ć‚Šć¤ć„ć¦ć„ć‚‹ć®ćŒē†ęƒ³ć§ć™ć€‚

惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®ä½œęˆć«ćÆHoudini悒ä½æē”Øć—ć¦ć„ć¾ć™ć€‚ (ä½œć‚Šę–¹ćÆå¾ŒåŠć§č§£čŖ¬ć—ć¾ć™)

ShaderGraph恮čح定

Alpha Clip悒ONć«ć—ć¦ćŠćć¾ć™ć€‚

ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć®ä½œęˆ

ꉋ順1 : 惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®äŗŒå€¤åŒ–

StepćƒŽćƒ¼ćƒ‰ć§ćƒŽć‚¤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć‚’äŗŒå€¤åŒ–恗态EmissionćØ恗恦å‡ŗåŠ›ć—ć¦ćæć¾ć™ć€‚

ēµęžœ

惞惆ćƒŖć‚¢ćƒ«ć®Clip Timeć‚’å¤‰åŒ–ć•ć›ć‚‹ćØć€ćƒ¢ćƒ‡ćƒ«ć®č”Øé¢ćŒć˜ć‚ć˜ć‚ćØē™½ćå”—ć‚Šć¤ć¶ć•ć‚Œć¦ć„ćć¾ć™ć€‚

ꉋ順2 : ćƒ¢ćƒ‡ćƒ«ć‚’å‰Šć‚‹

惎悤ć‚ŗ恮äŗŒå€¤åŒ–ćƒ‘ć‚æćƒ¼ćƒ³ć‚’Alpha Clip Threshold恫ꎄē¶šć—ć¾ć™ć€‚
0.5 < Alpha Clip Threshold 恫ćŖć£ćŸå “åˆć«ć‚ÆćƒŖćƒƒćƒ”ćƒ³ć‚°(ꏏē”»ćŒć‚­ćƒ£ćƒ³ć‚»ćƒ«)恕悌悋恟悁态
Step恮å‡ŗåŠ›ć®ē™½ć„éƒØåˆ†ćŒćć‚ŠęŠœć‹ć‚Œć¾ć™ć€‚

ēµęžœ

惞惆ćƒŖć‚¢ćƒ«ć®Clip Timeć‚’å¤‰åŒ–ć•ć›ć‚‹ćØć€ćƒ¢ćƒ‡ćƒ«ć®č”Øé¢ćŒå‰Šć‚Œć¦ć„ćć¾ć™ć€‚

ꉋ順3 : ćƒ•ćƒć‚’å…‰ć‚‰ć›ć‚‹

仄äø‹ć®ć‚ˆć†ć«ć€å‰Šć‚Œć‚‹ćƒ•ćƒć®éƒØåˆ†ć‚’ē™½ćå…‰ć‚‰ć›ć¦ćæć¾ć—ć‚‡ć†ć€‚

ćƒ•ćƒć‚’å…‰ć‚‰ć›ć‚‹

惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®äŗŒå€¤åŒ–ć§ćƒ¢ćƒ‡ćƒ«ć‚’å”—ć‚Šć¤ć¶ć—ć¤ć¤ć€ę™‚é–“ć‚’å°‘ć—é…ć‚‰ć›ćŸäŗŒå€¤åŒ–ć§ćƒ¢ćƒ‡ćƒ«ć‚’å‰Šć‚Šć¾ć™ć€‚

ēµęžœ

å‰Šć‚Œć®ćƒ•ćƒć®éƒØåˆ†ćŒå…‰ć‚Šć¾ć™ć€‚

問锌ē‚¹ : Clip Time = 1ć«ć—ćŸćØćć«å‰Šć‚ŒćŒę®‹ć‚‹

ä»Šå›žä½œęˆć—ćŸćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć§ć™ćŒć€å•é”Œē‚¹ćŒć‚ć‚Šć¾ć™ć€‚
Clip Time = 1ćØ恗恟ćØćć«ć€ćƒ”ćƒƒć‚·ćƒ„ćŒå‰Šć‚Œćć‚Œćšć«ę®‹ć£ć¦ć—ć¾ć†ć®ć§ć™ć€‚

å®Ÿéš›ć®ć‚²ćƒ¼ćƒ ć§ä½æć„ćŸć„å “åˆć€Clip Time = 1 ć§ćƒ”ćƒƒć‚·ćƒ„ćŒå®Œå…Øć«å‰Šć‚ŒćŸę–¹ćŒéƒ½åˆćŒč‰Æ恄恧恗悇恆怂

ćƒ”ćƒƒć‚·ćƒ„ćŒå‰Šć‚Œćć‚Œćšć«ę®‹ć£ć¦ć—ć¾ć†ē†ē”±

ćƒØć‚³č»ø悒Clip Time态ć‚æ惆č»øć‚’ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–ć®å¤‰åŒ–ćØć—ć¦ć‚°ćƒ©ćƒ•ć«ęć„ć¦ćæ悋ćØ态仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

Clip Time = 1 ć®ę™‚ć€č‰²ć®å¤‰åŒ–ćÆ完äŗ†ć—ć¦ć„ć¾ć™ćŒć€ćƒ”ćƒƒć‚·ćƒ„ćÆ完å…Øć«å‰Šć‚Œćšć«å°‘ć—ę®‹ć£ć¦ć—ć¾ć£ć¦ć„ć¾ć™ć€‚

Clip Time = 1 ć§å®Œå…Øć«å‰Šć‚‹

ćƒ”ćƒƒć‚·ćƒ„ćŒå‰Šć‚Œåˆ‡ć‚Œć‚‹ć®ćÆ Clip Time = 1.4 ćŖ恮恧态Clip Time 悒 0 ~ 1 恋悉怀0 ~ 1.4 恮ēÆ„å›²ć«å¤‰ę›ć—ć¦ć‚ć’ć¾ć™ć€‚
ēÆ„å›²å¤‰ę›ć™ć‚‹ćØ态仄äø‹ć®ć‚ˆć†ćŖć‚°ćƒ©ćƒ•ć«ćŖć‚Šć¾ć™ć€‚

ShaderGraph

RemapćƒŽćƒ¼ćƒ‰ć‚’åˆ©ē”Ø恗恦态Clip Time恮ēÆ„å›²ć‚’ [0, 1] 恋悉态 [0, 1 + DelayTime] ćøå¤‰ę›ć—ć¾ć™ć€‚

ēµęžœ

Clip Time = 1 ć®ę™‚ć«ćƒ”ćƒƒć‚·ćƒ„ćŒå®Œå…Øć«å‰Šć‚Œć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć—ćŸć€‚


åæœē”Ø : ē‡ƒćˆć‚‹ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾

ē‡ƒćˆć¦ę¶ˆę»…ć™ć‚‹ć‚ˆć†ćŖćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć®ä½œć‚Šę–¹ć‚’ē“¹ä»‹ć—ć¾ć™ć€‚

Ramp惆ć‚Æć‚¹ćƒćƒ£

仄äø‹ć®Ramp惆ć‚Æć‚¹ćƒćƒ£ć‚’ä½æē”Ø恗恦态ē‡ƒćˆć‚‹ć‚ˆć†ćŖč‰²ć®å¤‰åŒ–ć‚’äøŽćˆć¾ć™ć€‚

ć‚°ćƒ©ćƒ•

ć“ć®ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć‚’ę™‚é–“ć®ć‚°ćƒ©ćƒ•ćØ恗恦č”Ø恙ćØ仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

  • ćƒØć‚³č»ø : ClipTime
  • ć‚æ惆č»ø : 惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć«å«ć¾ć‚Œć‚‹ę˜Žåŗ¦(0~1)



å®Ÿéš›ć®č”Øē¤ŗćØ恮åƾåæœćÆ仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

ShaderGraphå…Ø体

ć‚·ć‚§ćƒ¼ćƒ€ćƒ¼ć‚°ćƒ©ćƒ•å…Ø体ćÆ仄äø‹ć«ćŖć‚Šć¾ć™ć€‚
惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć«Smoothstep悒適ē”Øć—ćŸå¾Œć€Ramp惆ć‚Æć‚¹ćƒćƒ£ć§ē€č‰²ć—ć¦ć„ć¾ć™ć€‚

Ramp惆ć‚Æć‚¹ćƒćƒ£ć‚’åˆ©ē”Ø恗恟ē€č‰²ę–¹ę³•ćÆ仄äø‹ć®ćƒćƒ£ćƒ—ć‚æćƒ¼ć§č§£čŖ¬ć—ć¦ć„ć¾ć™ć€‚
šŸ ć‚°ćƒ¬ćƒ¼ć‚¹ć‚±ćƒ¼ćƒ«ē”»åƒć«č‰²ć‚’ä»˜ć‘ć‚‹

要ē“ 01 : ć‚«ćƒ©ćƒ¼ć‚°ćƒ©ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć®å¤‰åŒ–

仄äø‹ć®éƒØåˆ†ć§ćÆć€ć‚«ćƒ©ćƒ¼ć‚°ćƒ©ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć®å¤‰åŒ–ć‚’ä½œć£ć¦ć„ć¾ć™ć€‚


Ꙃ間ēµŒéŽć§å¾ć€…恫ē™ŗå…‰ć—ć¦ć„ćć‚ˆć†ćŖč‰²ć®å¤‰åŒ–

å®Ÿéš›ć®å¤‰åŒ–

ClipTimeć®å€¤ć‚’å¢—ć‚„ć—ć¦ć„ććØ态仄äø‹ć®ć‚ˆć†ć«å¤‰åŒ–ć—ć¾ć™ć€‚

要ē“ 02: ć‚°ćƒ©ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć®ćƒžć‚¹ć‚Æ

StepćƒŽćƒ¼ćƒ‰ć‚’åˆ©ē”Øć—ć¦ć€ćƒŽć‚¤ć‚ŗć®č‰²ćŒClipTime悒äø‹å›žć‚‹éƒØåˆ†ć‚’0ć«ć™ć‚‹ć‚ˆć†ćŖć‚‚ć®ć‚’ä½œć‚Šć¾ć™ć€‚


Ꙃ間ēµŒéŽć§å¾ć€…恫ē™½ććŖć£ć¦ć„ćć‚ˆć†ćŖ変化

å®Ÿéš›ć®å¤‰åŒ–

ē”»é¢äøŠć§ē¢ŗčŖć—恦ćæ悋ćØ态仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

要ē“ 01 Ɨ 要ē“ 02

要ē“ 01ćØ要ē“ 02ć‚’ä¹—ē®—恙悋恓ćØć§ć€å¾ć€…ć«č¼ćå§‹ć‚ć‚‹ćØ恄恆č”Øē¾ć«ćŖć‚Šć¾ć™ć€‚


ć‚«ćƒ©ćƒ¼ć‚°ćƒ©ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć®å¤‰åŒ–ć‚’äŗŒå€¤åŒ–ćƒ‘ć‚æćƒ¼ćƒ³ć§ćƒžć‚¹ć‚Æ恙悋

å®Ÿéš›ć®å¤‰åŒ–

ē”»é¢äøŠć§ē¢ŗčŖć—恦ćæ悋ćØ态仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

要ē“ 03 : ćƒ”ćƒƒć‚·ćƒ„å‰Šć‚Œ

仄äø‹ćÆ态惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®äŗŒå€¤åŒ–ć‚’Alpha Clip Threshold恫ꎄē¶šć—ć¦ć€ćƒ”ćƒƒć‚·ćƒ„ćŒå‰Šć‚Œć‚‹ć‚ˆć†ć«ć—ć¦ć„ć¾ć™ć€‚

å®Ÿéš›ć®å¤‰åŒ–

要ē“ 01 Ɨ 要ē“ 02 Ɨ 要ē“ 03 (å®Œęˆ)

ć‚°ćƒ©ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć®å¤‰åŒ–ćØć€ćƒ”ćƒƒć‚·ćƒ„å‰Šć‚Œć‚’ēµ„ćæåˆć‚ć›ć‚‹ćØ态ē™ŗå…‰ć—ćŸć®ć”ć«å‰Šć‚Œć¦ę¶ˆę»…ć™ć‚‹ćØ恄恆č”Øē¾ć«ćŖć‚Šć¾ć™ć€‚

ShaderGraph

惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®ä½œęˆ (Houdini)

Houdini悒ä½æć£ćŸćƒŽć‚¤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®ä½œęˆę–¹ę³•ć‚’ē“¹ä»‹ć—ć¾ć™ć€‚

ä½æē”Øćƒ„ćƒ¼ćƒ«

  • Houdini 18.0 (Indiećƒ©ć‚¤ć‚»ćƒ³ć‚¹ä»„äøŠ)

ē„”ꖙē‰ˆć®Apprenticećƒ©ć‚¤ć‚»ćƒ³ć‚¹ć ćØć€ćƒ¬ćƒ³ćƒ€ćƒŖćƒ³ć‚°ē”»åƒć«ć‚¦ć‚©ćƒ¼ć‚æćƒ¼ćƒžćƒ¼ć‚ÆćŒć¤ć„ć¦ć—ć¾ć„ć¾ć™ć€‚
꜉ꖙē‰ˆć®Indiećƒ©ć‚¤ć‚»ćƒ³ć‚¹ćŒåæ…要恫ćŖć‚Šć¾ć™ć€‚

Houdini恧惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć‚’ä½œć‚‹ćƒ”ćƒŖ惃惈

通åøø态惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć‚’ēƒä½“ć®ć‚ˆć†ćŖ惆ć‚Æć‚»ćƒ«åƆåŗ¦ć«åć‚ŠćŒć‚ć‚‹3Dćƒ¢ćƒ‡ćƒ«ć«č²¼ć‚Šä»˜ć‘ć‚‹ćØ态
ęØ”ę§˜ć«åć‚ŠćŒē”Ÿć¾ć‚Œć¦ć—ć¾ć„ć¾ć™ć€‚

2D Perlin Noise

HoudinićÆ态3ę¬”å…ƒåŗ§ęØ™ć‹ć‚‰ćƒŽć‚¤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć‚’ä½œęˆć§ćć‚‹ćŸć‚ć€åć‚Šć®ćŖ恄惎悤ć‚ŗć‚’ä½œć‚‹ć“ćØćŒć§ćć¾ć™ć€‚

3D Perlin Noise

ć¾ćŸć€HoudiniäøŠć§ć‚‚ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć‚’ä½œć‚Œć‚‹ćŸć‚ć€
HoudiniäøŠć§ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–ć‚’ē¢ŗčŖć—ćŖ恌悉惎悤ć‚ŗ悒čŖæę•“ć§ćć‚‹ćƒ”ćƒŖćƒƒćƒˆć‚‚ć‚ć‚Šć¾ć™ć€‚

惍惃惈ćƒÆćƒ¼ć‚Æå…Ø体

ä»Šå›žä½œć‚‹ćƒćƒƒćƒˆćƒÆćƒ¼ć‚Æ恮å…Øä½“åƒć«ćŖć‚Šć¾ć™ć€‚

ćƒ”ćƒƒć‚·ćƒ„ć®ē“°åˆ†åŒ–

ä»Šå›žć€ä½œęˆć—ćŸćƒŽć‚¤ć‚ŗ悒頂ē‚¹ć‚«ćƒ©ćƒ¼ć«ęŒćŸć›ć€ćć‚Œć‚’ćƒ†ć‚Æć‚¹ćƒćƒ£ćØć—ć¦ćƒ™ć‚¤ć‚Æ恙悋恟悁态
é«˜ć„č§£åƒåŗ¦ć®é ‚ē‚¹ę•°ćŒåæ…要恫ćŖć‚Šć¾ć™ć€‚

RemeshćƒŽćƒ¼ćƒ‰ć‚’åˆ©ē”Øć—ć¦ćƒ”ćƒƒć‚·ćƒ„ć‚’ē“°ć‹ćåˆ†å‰²ć—态頂ē‚¹ę•°ć‚’å¢—ć‚„ć—ć¾ć™ć€‚

Remeshć§ćƒ”ćƒƒć‚·ćƒ„ć‚’åˆ†å‰²ć™ć‚‹ćØUVćŒę±šććŖ悋恮恧态äø‹ęµć§ćÆUV TexturećƒŽćƒ¼ćƒ‰ć‚’åˆ©ē”Ø恗恦UV悒čØ­å®šć—ć¾ć™ć€‚

Perlin Noise恮čح定

Attribute VOP悒ä½æć£ć¦ćƒŽć‚¤ć‚ŗ悒čØ­å®šć—ć¾ć™ć€‚

Attribute VOP恮äø­ć§ćÆ
åŗ§ęؙPć‹ć‚‰ćƒ‘ćƒ¼ćƒŖćƒ³ćƒŽć‚¤ć‚ŗ(Anti-Aliased NoisećƒŽćƒ¼ćƒ‰)悒ē”Ÿęˆć—态頂ē‚¹ć‚«ćƒ©ćƒ¼CdćøčØ­å®šć—ć¦ć„ć¾ć™ć€‚

惎悤ć‚ŗēÆ„å›²ć‚’ 0 ~ 1 恫恙悋

Unity恮ShaderGraph恧惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć‚’ę‰±ć†éš›ć€
惎悤ć‚ŗå€¤ć®ēƄ囲ćÆ0 ~ 1恫ćŖć£ć¦ć„ćŸę–¹ćŒéƒ½åˆćŒč‰Æć„ć®ć§ć™ćŒć€
Attribute VOPć§ä½œęˆć—ćŸćƒŽć‚¤ć‚ŗć®å€¤ćÆ0~1恮ēÆ„å›²ć«åŽć¾ć£ć¦ć„ć¾ć›ć‚“ć€‚

Attribute Promote ćØ Attribute Wrangle ć‚’åˆ©ē”Øć—ć¦ć€ćƒŽć‚¤ć‚ŗ悒0~1恮ēÆ„å›²ć«å¤‰ę›ć™ć‚‹ć‚ˆć†ćŖ惭ć‚ø惃ć‚Æ悒ēµ„ć‚“ć§ć‚ć’ć¾ć™ć€‚

惎悤ć‚ŗć®ęœ€å¤§ćƒ»ęœ€å°ć®å–å¾—

Attribute Promote悒ä½æ恆恓ćØ恧态Cdć‚¢ćƒˆćƒŖćƒ“ćƒ„ćƒ¼ćƒˆć®ęœ€å°å€¤ćƒ»ęœ€å¤§å€¤ć‚’å–å¾—ć™ć‚‹ć“ćØćŒć§ćć¾ć™ć€‚

ęœ€åˆć®Attribute Promote恧ćÆ态Cdć‚¢ćƒˆćƒŖćƒ“ćƒ„ćƒ¼ćƒˆć® ęœ€å°å€¤(Minimum) 悒걂悁态Detailć‚Æćƒ©ć‚¹ć«äæå­˜ć—ć¾ć™ć€‚
ć‚¢ćƒˆćƒŖćƒ“ćƒ„ćƒ¼ćƒˆć®åå‰ćÆ Cd_min ć«ć—ć¦ć„ć¾ć™ć€‚

2ē•Ŗē›®ć®Attribute Promote恧ćÆ态Cdć‚¢ćƒˆćƒŖćƒ“ćƒ„ćƒ¼ćƒˆć® ęœ€å¤§å€¤(Minimum) 悒걂悁态Detailć‚Æćƒ©ć‚¹ć«äæå­˜ć—ć¾ć™ć€‚
ć‚¢ćƒˆćƒŖćƒ“ćƒ„ćƒ¼ćƒˆć®åå‰ćÆ Cd_max ć«ć—ć¦ć„ć¾ć™ć€‚

惎悤ć‚ŗ恮ēÆ„å›²å¤‰ę›

Attribute Wrangle ćƒŽćƒ¼ćƒ‰ć«ć¦ć€Cd悒 0~1恮ēÆ„å›²ć«åŽć‚ć‚‹ć‚ˆć†ćŖVEXć‚³ćƒ¼ćƒ‰ć‚’ę›øćć¾ć™ć€‚

 // detail恌ꌁ恤Cd_minć‚¢ćƒˆćƒŖćƒ“ćƒ„ćƒ¼ćƒˆ ć‚’å–å¾—
 vector min = detail(geoself(), "Cd_min", 0); 
 
 // detail恌ꌁ恤Cd_maxć‚¢ćƒˆćƒŖćƒ“ćƒ„ćƒ¼ćƒˆ ć‚’å–å¾—
 vector max = detail(geoself(), "Cd_max", 0); 
 
 // Cd 悒 ēƄ囲(Cd_min ~ Cd_max)恋悉 ēƄ囲(0 ~ 1)ćøå¤‰ę›
 @Cd = fit(@Cd, min, max, 0, 1);

ēµęžœ

惎悤ć‚ŗć®č‰²ć®ēÆ„å›²ćŒ0~1恫ćŖ悊态仄äø‹ć®ć‚ˆć†ćŖč¦‹ćŸē›®ć«ćŖć‚Šć¾ć™ć€‚

HoudiniäøŠć§ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć‚’ē¢ŗčŖć—恦ćæ悋

Unityćøćƒ‡ćƒ¼ć‚æć‚’ęŒć£ć¦ć„ćå‰ć«ć€HoudiniäøŠć§ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć‚’ä½œć£ć¦ćæ恦态č‰Æć„ę„Ÿć˜ć®ćƒ‡ć‚£ćƒ†ćƒ¼ćƒ«ćŒå‡ŗ恦恄悋恋悒ē¢ŗčŖć—ć¦ćŠć„ćŸę–¹ćŒč‰Æ恄恧恗悇恆怂

今回ćÆ态24ćƒ•ćƒ¬ćƒ¼ćƒ  ć‹ć‘ć¦ćƒ¢ćƒ‡ćƒ«ćŒå‰Šć‚Œć‚‹ć‚ˆć†ć«ć—ć¦ćæć¾ć™ć€‚

// 頂ē‚¹ć‚«ćƒ©ćƒ¼ćŒå°ć•ć„éƒØ分ćÆć‚ÆćƒŖćƒƒćƒ”ćƒ³ć‚°(削除)
if (@Cd.r < chf("clip"))
    removepoint(geoself(), @ptnum);
    
// 頂ē‚¹ć‚«ćƒ©ćƒ¼ć‚’ęˆ»ć—ć¦ćŠć
@Cd = 1; 

ēµęžœ

Houdinić‚’å†ē”Ÿć™ć‚‹ćØ态仄äø‹ć®ć‚ˆć†ćŖćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć«ćŖć‚Šć¾ć™ć€‚
惎悤ć‚ŗć®ćƒ‡ć‚£ćƒ†ćƒ¼ćƒ«ć‚’čŖæę•“ć—ćŸć„å “åˆć€ćƒŽć‚¤ć‚ŗć®ćƒ‘ćƒ©ćƒ”ćƒ¼ć‚æ悒čŖæę•“ć—ć¾ć™ć€‚
(Attribute VOPå†…ć® Anti-Aliased Noise悒čŖæę•“ć—ć¾ć™)

惆ć‚Æć‚¹ćƒćƒ£å‡ŗ力

ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć«ä½æ恆惎悤ć‚ŗćŒć§ććŸć®ć§ć€é ‚ē‚¹ć‚«ćƒ©ćƒ¼ć‚’ćƒ†ć‚Æć‚¹ćƒćƒ£ćØ恗恦å‡ŗåŠ›ć—ć¾ć™ć€‚

Map Baker ćƒŽćƒ¼ćƒ‰

SideFX Labs 恮 Map Baker ćƒŽćƒ¼ćƒ‰ć‚’ä½æē”Ø恙悋恓ćØ恧頂ē‚¹ć‚«ćƒ©ćƒ¼ć‚’ćƒ†ć‚Æć‚¹ćƒćƒ£ćØć—ć¦ćƒ™ć‚¤ć‚Æć§ćć¾ć™ć€‚
(SideFX LabsćÆć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ē›“å¾Œć®Houdini恫ćÆå«ć¾ć‚Œć¦ć„ćŖ恄恟悁态č‡Ŗåˆ†ć§ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™)

Map Baker 恮čح定

Map BakerćÆ Gamma = 1.0 恫čØ­å®šć—ć¾ć™ć€‚ (1.0ä»„å¤–ć®å€¤ć‚’å…„ć‚Œć¦ć—ć¾ć†ćØ态惆ć‚Æć‚¹ćƒćƒ£ćØć—ć¦ćƒ™ć‚¤ć‚Æć•ć‚Œć‚‹ć‚«ćƒ©ćƒ¼ęƒ…å ±ć«é€†ć‚¬ćƒ³ćƒžč£œę­£ć®č؈ē®—ćŒå…„ć£ć¦ć—ć¾ć„ć¾ć™)

ēµęžœ

惙悤ć‚ÆćŒå®Œäŗ†ć™ć‚‹ćØ态仄äø‹ć®ć‚ˆć†ćŖ惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ćŒå‡ŗåŠ›ć•ć‚Œć¾ć™ć€‚

Apprenticećƒ©ć‚¤ć‚»ćƒ³ć‚¹ć‚’ä½æē”Øć—ć¦ć„ć‚‹å “åˆć€ćƒ†ć‚Æć‚¹ćƒćƒ£å³äø‹ć«ć‚¦ć‚©ćƒ¼ć‚æćƒ¼ćƒžćƒ¼ć‚ÆćŒå…„ć£ć¦ć—ć¾ć„ć¾ć™

惆ć‚Æć‚¹ćƒćƒ£ć®ć‚¤ćƒ³ćƒćƒ¼ćƒˆ (Unity)

ćƒ‡ć‚£ć‚¾ćƒ«ćƒ–č”Øē¾ć«ä½æ恆惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ćÆć€ć‚«ćƒ©ćƒ¼ęƒ…å ±ć§ćÆćŖ恄恮恧态
惎悤ć‚ŗ惆ć‚Æć‚¹ćƒćƒ£ć®sRGBć®ćƒć‚§ćƒƒć‚Æć‚’å¤–ć—ć¦ćŠćć¾ć™ć€‚