Godot: UVκ°€ μΆ”κ°€λ˜λ©΄ SurfaceTool 법선이 λ§€λ„λŸ½μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 08μ›” 13일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: godotengine/godot

Godot 2.1 베타 및 2.1 μ•ˆμ • 버전, Windows 10 64λΉ„νŠΈμ—μ„œ ν…ŒμŠ€νŠΈ

SurfaceTool 및 add_smooth_group(true) λ°©λ²•μœΌλ‘œ ν‘œλ©΄μ„ 생성할 λ•Œ 정점에 UVκ°€ μΆ”κ°€λ˜λ©΄ λΆ€λ“œλŸ¬μš΄ 법선을 μ–»λŠ” 것이 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.
λ‚˜λŠ” UVκ°€ ν•œ μ •μ μ—μ„œ λ‹€λ₯Έ μ •μ μœΌλ‘œ μ¦κ°€ν•˜μ§€ μ•Šμ„ λ•Œ 특히 λ°œμƒν•œλ‹€λŠ” 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ ν‘œλ©΄μ˜ λͺ¨λ“  μΏΌλ“œμ— 0μ—μ„œ 1둜 κ°€λŠ” UVκ°€ μžˆλŠ” 경우 μΏΌλ“œλŠ” λ‹¨λ‹¨ν•œ λ©΄ λ²•μ„ μœΌλ‘œ λ Œλ”λ§λ©λ‹ˆλ‹€.
이 λ•Œλ¬Έμ— 법선을 직접 μƒμ„±ν•΄μ•Όν•©λ‹ˆλ‹€.

버그인지 ν™•μ‹€ν•˜μ§€ μ•Šμ€ μ΄μœ λŠ” κ΅¬ν˜„λ˜μ—ˆλ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‚΄κ°€ λ§ν–ˆλ“―μ΄ κ·Έ κ²½μš°μ—λ„ λΆ€λ“œλŸ¬μš΄ 법선을 κ°€μ§ˆ 수 μžˆμœΌλ―€λ‘œ 이것을 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

μž¬ν˜„:
SurfaceToolSmoothShading.zip
메인 μž₯면을 μ‹œμž‘ν•˜κ³  UVκ°€ μžˆλŠ” μ™Όμͺ½μ— μƒμ„±λœ ν‘œλ©΄μ—λŠ” λ‹¨λ‹¨ν•œ 면이 있고 였λ₯Έμͺ½μ— μžˆλŠ” ν‘œλ©΄μ€ 그렇지 μ•Šκ³  λ§€λ„λŸ¬μš΄ 면이 있으며 λ‘˜ λ‹€ λΆ€λ“œλŸ¬μš΄ 그룹이 μžˆλŠ” 것을 ν™•μΈν•˜μ‹­μ‹œμ˜€.

bug confirmed core

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ—¬μ „νžˆ λ°œμƒν•©λ‹ˆλ‹€.
SurfaceToolSmoothShading.zip

SurfaceTool μ—μ„œλŠ” 정점이 곡유 된 κ²½μš°μ—λ§Œ ν‰ν™œν™”κ°€ λ°œμƒν•  수 있고 곡유 정점이 λ™μΌν•œ 속성을 κ°€μ Έμ•Όν•œλ‹€κ³  κ°€μ •ν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 이 경우 UVκ°€ μ„œλ‘œ λ‹€λ₯Έ 것은 μ‚¬μ‹€μ΄μ§€λ§Œ UVκ°€ λ‹€λ₯Έ 두 μ •μ μœΌλ‘œ μŠ€λ¬΄λ”©μ΄ μ—¬μ „νžˆ κ°€λŠ₯ν•΄μ•Ό ν•˜μ§€λ§Œ λ™μΌν•œ 값을 κ°–λŠ” 두 법선을 μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” @Zylann μ €λŠ” μ½”λ“œ 생성 메쉬λ₯Ό λ§€λ„λŸ½κ²Œ ν•˜λŠ” μ˜¬λ°”λ₯Έ 방법을 μ°ΎκΈ° μœ„ν•΄ 인터넷 검색을
λ‚˜λŠ” godot 3.0.4λ₯Ό μ‚¬μš©ν•˜κ³  있고 add_smooth_group을 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜κ³  있으며 UV둜 μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
[νŽΈμ§‘] 슀슀둜 μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ¬Έμ œλŠ” μ—¬μ „νžˆ μ‘΄μž¬ν•˜μ§€λ§Œ Zylann이 μ½”λ“œμ—μ„œ ν•œ κ²ƒμ²˜λŸΌ UVκ°€ λ©”μ‹œ μœ„μ— 퍼져 μžˆλŠ” κ²½μš°μ—λ§Œ μž‘λ™ν•˜μ§€λ§Œ λͺ¨λ“  μΏΌλ“œμ— λŒ€ν•΄ 반볡될 λ•ŒλŠ” μž‘λ™ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  지정해야 ν•©λ‹ˆλ‹€.

# If UVs are spread, normals are smooth.
  var t00 = Vector2(p00.x, p00.z) / Vector2(sx,sy)
  var t10 = Vector2(p10.x, p10.z) / Vector2(sx,sy)
  var t11 = Vector2(p11.x, p11.z) / Vector2(sx,sy)
 var t01 = Vector2(p01.x, p01.z) / Vector2(sx,sy)

@Zylann λ‹Ήμ‹ (λ˜λŠ” λ‹€λ₯Έ μ‚¬λžŒ)이 μ—¬μ „νžˆ Godot 3.2.1 λ˜λŠ” 3.2.2beta4 μ—μ„œ 이 버그λ₯Ό μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

μ—¬μ „νžˆ λ°œμƒν•©λ‹ˆλ‹€.
SurfaceToolSmoothShading.zip

SurfaceTool μ—μ„œλŠ” 정점이 곡유 된 κ²½μš°μ—λ§Œ ν‰ν™œν™”κ°€ λ°œμƒν•  수 있고 곡유 정점이 λ™μΌν•œ 속성을 κ°€μ Έμ•Όν•œλ‹€κ³  κ°€μ •ν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 이 경우 UVκ°€ μ„œλ‘œ λ‹€λ₯Έ 것은 μ‚¬μ‹€μ΄μ§€λ§Œ UVκ°€ λ‹€λ₯Έ 두 μ •μ μœΌλ‘œ μŠ€λ¬΄λ”©μ΄ μ—¬μ „νžˆ κ°€λŠ₯ν•΄μ•Ό ν•˜μ§€λ§Œ λ™μΌν•œ 값을 κ°–λŠ” 두 법선을 μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰