10일차: 하늘 배경(돔)에서 UV 확장 및 UVOffset 배우기

이 글은 어드벤트 달력'[VCD] 테마파크 만들어.의 열흘째 기사다.

이번 내용


이번에 우리는 밤낮으로 하늘을 전환할 수 있는 배경(하늘 돔)을 만들면서 다음과 같은 내용을 배운다.
·Blender에서 UV 구현
・UVOffset 사용 방법
하늘의 돔은 공이나 반구에 그림을 붙이는 것이다
이번에는 반구로 할게요.

블렌더로 하늘 돔 만들기


※ UV 전개에 익숙하지 않기 때문에 소개하는 방법보다 더 좋은 방법이 있다고 생각합니다.
"더 좋은 방법을 알고 있어요!"이런 분이 계시다면 메모를 남겨주시면 감사하겠습니다.

UV 확장


이번에 제작하면서 다양한 정보를 알아봤는데, 하늘 돔을 만들 수 있는 방법이 몇 가지 있는 것 같아요.
이번에는 아래 사이트를 참고하여 UV볼을 사용하고 원형 이미지로 제작한다.
https://rikoubou.hatenablog.com/entry/2018/05/21/174949
사진은 낮에 쓰는데 흥미진진하게 찍은 360도 이미지가 있어서 그걸로 해요.저녁에 구면 이미지가 아닌 자유로운 소재로 사용해 보세요.
기본적으로 상술한 사이트에 따라 추천을 진행하였다.그러나 기본적으로 그물 모양이 바깥으로 향하기 때문에 그물 모양의 방향을 반전시켜야 한다.
모두 메쉬 > 일반 > 반전 후 반전을 선택합니다.
완성된 그림은 다음과 같다.

확인할 때 재료 속성의 뒷면 숨김을 미리 확인하면 뒷면이 방영되지 않아 확인하기 쉽다.
(위 그림의 오른쪽 아래 항목)
UV의 한 쪽이지만 왼쪽 창은 UV용 시야이고 오른쪽은 모델링용 시야입니다.
왼쪽 창의 정점은 오른쪽 정점과 대응합니다.정점을 UV 뷰에서 이동하면 모델링 뷰에서 이미지의 디스플레이가 변경될 수 있습니다.
그리고 UV 화면을 보면서 UV 정점의 위치와 크기를 조절하면 완성이 됩니다.

UVOffset용 설정


(여기서부터는 독보적이다.)
하늘 돔 자체는 위 절차에 따라 완성됐지만, 이번에는 주·야용 배경을 전환할 수 있도록 UVOffset용 가공을 시작한다.
UVOffset은 여러 이미지를 한 장의 용지에 모아 메쉬 위치와 이미지를 이동하여 모델에 표시되는 패턴을 전환하는 방법입니다.
우선 낮용과 밤용의 가로 그림을 준비한다.
그런 다음 UV 뷰의 이미지 메뉴에서 이미지를 엽니다.
이렇게 하면 다음 그림의 상태가 됩니다.

이렇게 되면 낮과 밤이 하늘의 절반이 되므로 UV 시야에서 정점을 수정한다.
(x방향의size 0.5, 그리고 x방향의 음방향으로 0.5를 틀리면 다음과 같다.)

이렇게 하면 한 장의 그림에서 낮과 밤의 상태를 유지하면서 낮의 상태만 표시할 수 있다.
이제 낮 부분만 보이고, 밤 상태와 낮 상태를 V 캐스트로 전환한다.
(blender에서도 저녁 이미지를 확인할 수 있는 방법이 있는데 생각이 안 나서 생략)
완료 후 fbx로 출력

Unity 설정 작업


유니티에 특별히 설정된 작업은 없지만, 소재의 항목에 오프셋이 있기 때문에 이곳을 변경하면 저녁 외관도 확인할 수 있다.
offset은 방금 UV 이미지가 얼마나 엇갈렸는지 나타내는 뜻으로 가장 왼쪽 상단은 x=0, y=0, 가장 오른쪽 하단은 x=1, y=1이다.
이번에 x에서 0.5를 지정하면 그림이 가로로 반으로 이동하여 밤의 상태를 확인할 수 있다.

코드 생성


다음은 V cast 및 편집기 작업입니다.
이번에는 이미지 디스플레이를 어긋나게 하기 위해 UVoffest 기능을 사용합니다.
vci.assets(ExportAssets)
(Se t M a t e rial Texture OffsetFrom Name 사용)
이번에는 30분마다 주야를 전환하기 위해 제작되었습니다.
(00~29분은 낮, 30~59분은 밤)
-- 昼かどうかのを管理するフラグ。昼だとTrue。夜だとfalse
local isDaytime = true

-- スカイドームのUVOffset更新用の関数
function refreshSkyDome()
  -- 分を取得して文字列から数値に変更(数値に変更しないと大小の比較ができない)
  local minute = tonumber(os.date("%M"))

 --昼かつ30分より後の時
  if isDaytime and minute >= 30 then
    -- 画像をx方向に半分(0.5)ずらして表示
    vci.assets.SetMaterialTextureOffsetFromName("SkyDome",Vector2.__new(0.5, 0.0))
    -- フラグを夜にする
    isDaytime = false
  elseif not isDaytime and minute < 30 then
    -- 画像をずらさないで表示
    vci.assets.SetMaterialTextureOffsetFromName("SkyDome",Vector2.__new(0.0, 0.0))
    -- フラグを昼にする
    isDaytime = true
  end
end

function updateAll()
  -- ここに今まで作成した別の処理あり(省略) --

 -- 関数の呼び出し
  refreshSkyDome()
end
그리고 동작을 확인하면 완성!크리스마스이브가 왔다!

끝맺다


어때요?
이번에 제작된 스카이돔은 앞으로 밤과 전환할 수 있도록 모두 다른 방법으로 제작될 것으로 보인다.
다음에는 스쿠터를 돌리고 싶어요.

좋은 웹페이지 즐겨찾기