Home
Development Environment

거울 기능 사용 가이드

개요

VIVEN SDK의 거울 기능을 사용하여 VR 환경에서 사실적인 반사 효과를 구현할 수 있습니다.

기본 사용법

1. 거울 생성

Unity Editor에서 컴포넌트 추가
미러 표면 생성
Hierarchy에서 미러로 사용할 GameObject 선택 (Plane, Quad 등)
Inspector → Add ComponentVivenSDKMirrorSDKMirrorSurfaceComponent
미러 렌더러 생성
새로운 빈 GameObject 생성 또는 기존 GameObject 선택
Inspector → Add ComponentVivenSDKMirrorSDKMirrorRendererComponent
연결 설정
SDKMirrorRendererComponent의 Mirror Surfaces에 생성한 SDKMirrorSurfaceComponent 추가

2. Inspector 설정

SDKMirrorSurfaceComponent

Surface Settings
Material: 미러 표면에 사용할 재질 (비워두면 기본 셰이더 자동 생성)
Material Index: MeshRenderer 재질 배열 인덱스 (0=첫 번째)
Mesh Renderer: 미러를 렌더링할 MeshRenderer (비워두면 자동 할당)
Forward Transform: 앞면 방향 Transform (Z축이 정면)
Distance & Fade
Max Rendering Distance: 최대 렌더링 거리 (기본값: 10.0)
Fade Distance: 페이드 시작 거리 비율 (0-1, 기본값: 0.5)
Fade Color: 멀어질 때 적용되는 페이드 색상 (기본값: 검정)
Max Blend: 가까운 거리에서 반사 강도 (0-1, 기본값: 1.0)
Reflection Behavior
Use Recursive Darkening: 재귀 반사 시 점차 어두워지는 효과
Advanced Settings
Clipping Plane Offset: 클리핑 평면 오프셋 (기본값: 0.0)
Child Surfaces: 성능 최적화를 위한 하위 미러 표면들

SDKMirrorRendererComponent

Surface Connections
Mirror Surfaces: 렌더링할 미러 표면 목록 (비워두면 자동 감지)
Optimization Settings
Optimization Mode
Auto: 플랫폼 감지 기반 자동 최적화
Custom: 사용자 직접 설정
Mirror Quality (Custom 모드 전용)
Recursions: 미러 상호 렌더링 깊이 (기본값: 2)
Screen Scale Factor: 텍스처 해상도 비율 (0.1~1.0, 기본값: 0.5)
Anti-Aliasing Level: 1=None, 2=Low, 4=Medium, 8=High
Rendering Enabled: 렌더링 활성화 여부
Frame Skip: 프레임 스킵 수 (기본값: 0)
Texture Size: 렌더 텍스처 크기 (VR 모드에서는 16배수 자동 조정)
Disable Pixel Lights: 픽셀 라이트 비활성화
Rendering Settings
Render Layers: 반사될 레이어 선택 (UI/이펙트 제외 권장)
Render Shadows: 그림자 렌더링 여부
Render Post Processing: 포스트 프로세싱 적용 여부
Environment
Custom Skybox: 미러 전용 스카이박스
Use Occlusion Culling: 오클루전 컬링 사용 여부

Lua 스크립팅

-- 미러 표면 제어 local surface = gameObject:GetComponent("SDKMirrorSurfaceComponent") if surface ~= nil then surface.FadeColor = Color.red surface.MaxRenderingDistance = 15.0 surface.FadeDistance = 0.7 surface.MaxBlend = 0.8 surface.UseRecursiveDarkening = true surface.ClippingPlaneOffset = 0.1 surface.MaterialIndex = 0 end -- 미러 렌더러 제어 local renderer = gameObject:GetComponent("SDKMirrorRendererComponent") if renderer ~= nil then renderer.optimizationMode = OptimizationMode.Auto if renderer.optimizationMode == OptimizationMode.Custom then renderer.Recursions = 2 renderer.ScreenScaleFactor = 0.5 renderer.AntiAliasingLevel = 2 renderer.FrameSkip = 1 renderer.TextureSize = Vector2Int(512, 512) renderer.DisablePixelLights = true renderer.RenderShadows = false renderer.RenderPostProcessing = false renderer.UseOcclusionCulling = true renderer.RenderingEnabled = true end end
Lua
복사

플랫폼별 권장 설정

모바일

Recursions: 3 이하
Anti-Aliasing: None
Screen Scale Factor: 0.5 이하
Frame Skip: 2 이상

VR

Recursions: 2 이하
Anti-Aliasing: Low
Screen Scale Factor: 0.5
Frame Skip: 1 이상

데스크탑

Recursions: 제한 없음
Anti-Aliasing: Medium 이하
Screen Scale Factor: 0.5 ~ 1.0

주요 기능

자동 최적화 (Auto Mode)

Awake 시 플랫폼 감지 및 최적화 적용
PlayMode 변경 시 자동 재적용
텍스처 크기 16배수 자동 조정
플랫폼별 보수적 성능 제한 적용
자동 적용 설정
모바일
Recursions ≤ 3
Anti-Aliasing = None
Screen Scale Factor ≤ 0.5
Frame Skip ≥ 2
Disable Pixel Lights = true
VR
Recursions ≤ 2
Anti-Aliasing = Low
Screen Scale Factor = 0.5
Frame Skip ≥ 1
Disable Pixel Lights = true
데스크탑
사용자 설정 유지 (단, AA ≤ Medium, Screen Scale Factor 0.5~1.0 제한)

Child Surfaces

여러 거울을 그룹화하여 부모가 하위 미러를 통합 관리 → 성능 최적화

커스텀 환경

Custom Skybox 지정 → 거울에서만 다른 하늘 표현 가능 (예: 마법 거울 효과)

문제 해결

성능 저하

1.
Optimization Mode를 Auto로 설정
2.
Recursions 값 낮추기 (모바일 ≤3, VR ≤2)
3.
Screen Scale Factor 줄이기 (0.5 권장)
4.
Frame Skip 늘리기 (모바일 2+, VR 1+)
5.
Render Layers에서 불필요한 레이어 제외
6.
Render Shadows / Post Processing 비활성화
7.
Disable Pixel Lights 활성화

거울이 보이지 않음

1.
Material이 올바른 셰이더인지 확인
2.
MeshRenderer 연결 여부 확인
3.
Mirror Surfaces에 Surface 추가 여부 확인
4.
Auto 모드 제한으로 비활성화 여부 확인
5.
RenderingEnabled가 true인지 확인

API 참조

SDKMirrorSurfaceComponent 프로퍼티

Material: 표면 재질
MaterialIndex: MeshRenderer 재질 인덱스
MyMeshRenderer: MeshRenderer 참조
MyForwardTransform: Transform 참조
MaxRenderingDistance: 최대 거리
FadeDistance: 페이드 거리
FadeColor: 페이드 색상
MaxBlend: 반사 강도
UseRecursiveDarkening: 재귀 어둡기 여부
ClippingPlaneOffset: 클리핑 오프셋
ChildSurfaces: 하위 Surface 목록
MirrorSurface: 내부 MirrorSurface 참조 (읽기 전용)

SDKMirrorRendererComponent 프로퍼티

MirrorSurfaces: Surface 목록
optimizationMode: 최적화 모드 (Auto/Custom)
Recursions: 재귀 깊이
ScreenScaleFactor: 화면 스케일
AntiAliasingLevel: 안티앨리어싱 레벨
RenderingEnabled: 활성화 여부
FrameSkip: 프레임 스킵
TextureSize: 텍스처 크기
DisablePixelLights: 픽셀 라이트 비활성화
RenderLayers: 반사 레이어
RenderShadows: 그림자 렌더링
RenderPostProcessing: 포스트 프로세싱 적용
CustomSkybox: 전용 스카이박스
UseOcclusionCulling: 오클루전 컬링

SDKMirrorRendererComponent 메서드

ApplySettings(): 설정 적용
ApplyPlatformOptimization(): 플랫폼별 최적화 적용
DetectAndApplyPlatformSettings(): 플랫폼 감지 후 적용

OptimizationMode 열거형

public enum OptimizationMode { Auto, // 플랫폼 감지 기반 자동 최적화 Custom // 사용자 직접 설정 }
C#
복사