개요
VIVEN SDK의 거울 기능을 사용하여 VR 환경에서 사실적인 반사 효과를 구현할 수 있습니다.
기본 사용법
1. 거울 생성
Unity Editor에서 컴포넌트 추가
미러 표면 생성
•
Hierarchy에서 미러로 사용할 GameObject 선택 (Plane, Quad 등)
•
Inspector → Add Component → VivenSDK → Mirror → SDKMirrorSurfaceComponent
미러 렌더러 생성
•
새로운 빈 GameObject 생성 또는 기존 GameObject 선택
•
Inspector → Add Component → VivenSDK → Mirror → SDKMirrorRendererComponent
연결 설정
•
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
•
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#
복사