본문 바로가기

전체 글27

[Blender]Blender에서 추출한 FBX를 3dsMax로 불러왔을 때 UV가 제대로 나오지 않는 문제 해결 문제해결 기록 회사에서 협업하는 과정에서 작업자 간에 사용하는 툴 차이로 생긴 이슈와 해결한 방법입니다. 문제발생회사에서 1차 작업자가 블렌더를 사용해서 모델링 및 UV언랩과 텍스쳐 작업까지 마친 상태로 해당 모델을 FBX로 추출해서 애니메이터에게 넘겼으나 3ds Max로 해당 FBX를 불러오니 UV가 모두 깨진 상태로 불러와지는 이슈가 발생했습니다. 해당 이슈는 블렌더 - 유니티 간에는 발생하지 않다가 블렌더 - 3dsMax 간에 드물게 발생한 문제로 파악됩니다. 문제분석 찾아보니 FBX는 UV 데이터를 LayerElementUV 라는 배열 형태의 데이터와 인덱스를 저장해서 사용하도록 되어 있는데 해당 인덱스를 툴 마다 다르게 취급한다는 이야기가 있었습니다. 특히 블렌더 3.x 버전부터 메쉬 데이터에.. 2026. 3. 4.
[Unity] Static Batch/Dynamic Batch/GPU Instancing Batches = DrawCall + SetPassCall + 트랜스폼 데이터 바인드 등이 모두 포함된 일련의 작업단위GPU Instancing이나 Static/Dynamic Batching 으로 드로우콜을 줄일 수 있습니다. StaticBatching = 런타임 / 빌드타임에 Static Batch가 체크된 오브젝트 중 같은 머티리얼을 쓰는 메쉬의 버텍스를 합쳐서 저장합니다.- 드로우콜을 줄이는데 효과적이지만 메모리 사용량을 증가시킵니다.- 런타임에는 StaticBatchingUtility.Combine() 메서드로 가능. 주로 빌드타임에 묶는 것이 일반적입니다. DynamicBatching = 런타임에 CPU가 작은 메쉬들을 매 프레임 하나로 합쳐서 드로우콜을 줄이는 방식입니다.- 버텍스 30.. 2026. 2. 6.
[Unity/Animation]Humanoid Avatar-2 개요- 휴머노이드 아바타 알아보기 2편 1편에선 휴머노이드 아바타의 기본 세팅법에 대해 알아봤습니다만 단순히 아바타만 세팅하고 아무것도 하지 않으면 Generic 과 차이점이 없겠죠. 이번편에서는 휴머노이드 아바타의 장점이라고 할 수 있는 것들에 대해 알아봅시다. · IK 적용해보기 휴머노이드 아바타가 갖는 기본적인 기능이라고 볼 수 있는 IK(InverseKinematic)를 적용해봅시다. IK란?· IK는 Inverse Kinematic의 약자로 손, 발등 특정 본이 고정된 위치를 먼저 정해두고 연결된 나머지 본을 자동으로 계산해서 목표 위치로 도달하게 만드는 방식입니다. 본을 계층구조에 따라 직접 제어하는 FK(Forward Kinematic) 와는 다르게 IK는 목표 위치를 일종의 제약으로 삼고.. 2026. 1. 9.
[Unity/Animation]Humanoid Avatar-1 개요- 유니티 휴머노이드 아바타 알아보기 1. 휴머노이드 아바타란?사람 형태의 캐릭터를 표준 골격 구조로 전환한 후 사용할 수 있게 만들어, 애니메이션 재사용 · 리타게팅 · IK · 근육 및 트위스트 본 제어 등의 모션 보정을 임포트 단계에서 가능하게 하는 시스템입니다. 2. 아바타 생성 과정 사람 형태의 본이 포함된 FBX를 준비합니다. 유니티로 임포트한 뒤 임포트 세팅 - Rig - Animation Type 을 Humanoid 로 바꾸고 Apply 합니다. Avatar DefinitionCreate From This Model아바타를 새로 세팅Copy From Other Avatar이미 세팅된 휴머노이드 아바타를 적용 지금은 새로 아바타를 만들어야하니 Create From This Mode.. 2026. 1. 8.
[Unity] Render Graph Viewer 알아보기 RenderGraph렌더 그래프는 유니티 6에서 Scriptable Render Pass 를 작성할 때 사용하는 신규 API 입니다. 이전에 작성하고 사용하는 Renderer Feature 와 Pass 의 경우 RenderTexture 의 생성/해제를 개발자가 직접 관리해야하고 패스 간 리소스의 사용여부, 의존성을 정확하게 파악하기 어렵다는 단점이 있었습니다. 이를 해결하고자 새로 추가된 Render Graph를 통해 Pass를 작성하면 리소스를 자동으로 관리하고 각 패스에 사용되는 리소스를 파악하기 쉬워져 최적화가 더 편리해졌습니다. - Render Graph Viewer1. Pause/ Auto Update 버튼- 현재 프레임의 렌더 그래프를 표시합니다.Auto UpdateAuto Update: 매 .. 2025. 11. 23.
[Unity] 렌더러 피처에서 외부 텍스쳐 사용하기 using System;using UnityEngine;using UnityEngine.Rendering;using UnityEngine.Rendering.Universal;using UnityEngine.Rendering.RenderGraphModule;public class NewURPRenderFeature : ScriptableRendererFeature{ [SerializeField] NewURPRenderFeatureSettings settings; NewURPRenderFeaturePass m_ScriptablePass; public override void Create() { m_ScriptablePass = new NewURPRenderFeaturePas.. 2025. 10. 20.
[Unity]MeshLOD Unity 6.2 버전에 추가된 피처.메쉬를 임포트할 때 자동으로 LOD를 생성하는 기능. https://docs.unity3d.com/6000.2/Documentation/Manual/lod/mesh-lod-introduction.html 2025. 8. 26.
[UnityShader]MainLight ShadowMap Sampling 메인 라이트 실시간 섀도우 맵 샘플링 코드 Keyword//메인라이트 섀도우#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN//Lighting.hlsl 인클루드#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" GetMainLight()//FragmentShader//ShadowCoord 생성float4 shadowCoord = TransformWorldToShadowCoord(positionWS);//메인 라이트 할당Light mainLight = GetMainLight(sha.. 2025. 8. 15.
[UnityShader/HLSL] Simple Sub Surface Scattering Shader "Custom/SSS_Forward_MainLight"{ Properties { _BaseColor("BaseColor", Color) = (1,1,1,1) _Thickness("Subsurface Thickness", Range(0, 1)) = 0.5 _ScatteringFactor("ScatteringFactor", Range(1,4)) = 2 [HDR]_SSSColor("Subsurface Color", Color) = (1, 0.4, 0.3, 1) } SubShader { Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" .. 2025. 4. 8.