Files
XRLib/Assets/Resources/SHI/Modal/NW/NWModelView.uxml
2025-12-02 21:09:37 +09:00

49 lines
2.7 KiB
Plaintext

<!--
NWModelView.uxml - NW 3D 모델 뷰어 레이아웃
[개요]
glTF/glb 3D 모델을 렌더링하는 뷰어의 UI 레이아웃입니다.
ISOPModelView.uxml과 동일한 구조를 가지며, NWModal에서 사용됩니다.
RenderTexture로 오프스크린 렌더링된 3D 모델을 배경으로 표시합니다.
[UI 구조]
Root
├── render-container - 3D 렌더링이 표시되는 영역
│ (RenderTexture가 이 요소의 배경으로 설정됨)
└── expand-btn - 모델 뷰 확장 버튼 (전체화면)
[ISOPModelView와의 차이점]
- expand-btn 위치: ISOP=오른쪽 상단, NW=왼쪽 하단
- 사용 모달: ISOP=ISOPModal, NW=NWModal (수직 레이아웃)
[렌더링 방식]
1. NWModelView.cs에서 전용 카메라(NWModelViewCamera) 생성
2. 카메라가 Layer 6의 3D 모델을 RenderTexture로 렌더링
3. RenderTexture를 render-container의 배경으로 설정
4. 매 프레임 MarkDirtyRepaint()로 UI 갱신
[마우스 조작]
- 가운데 버튼 드래그: 카메라 이동 (Pan)
- 오른쪽 버튼 드래그: 모델 회전 (Orbit)
- 마우스 휠: 확대/축소 (Zoom)
[연관 파일]
- NWModalView.uss : 스타일시트
- NWModelView.cs : C# 컨트롤러 (렌더링, 마우스 조작)
[사용되는 리소스]
- SHI/Images/btn_expand_36 : 확장 버튼 이미지
-->
<ui:UXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" noNamespaceSchemaLocation="../../../../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
<Style src="project://database/Assets/Resources/SHI/Modal/NW/NWModalView.uss?fileID=7433441132597879392&amp;guid=1560514d54fae614c95172346d95c812&amp;type=3#NWModalView" />
<!-- 3D 렌더링 컨테이너: RenderTexture가 배경으로 표시됨
- flex-grow: 1로 부모 영역 전체 채움
- overflow: hidden으로 내용 잘림 방지 -->
<ui:VisualElement name="render-container" style="flex-grow: 1; flex-shrink: 1; flex-basis: 0; min-width: 0; min-height: 0; overflow: hidden;" />
<!-- 확장 버튼: 모델 뷰를 전체 화면으로 확장
- 왼쪽 하단에 위치 (ISOPModelView는 오른쪽 상단) -->
<ui:Button name="expand-btn" style="position: absolute; width: 36px; height: 36px; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0; background-color: rgba(255, 255, 255, 0); background-image: resource(&apos;SHI/Images/btn_expand_36&apos;); bottom: 20px; left: 10px;" />
</ui:UXML>