๊ณ ๊ธ ์ ์ฐจ์ ์ฝํ ์ธ ์์ฑ ์์คํ
์ค์๊ฐ 3D ๋ ๋ฒจ ์์ฑ์ ์ํ Wave Function Collapse ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ
- ๐ฏ ํ๋ก์ ํธ ๊ฐ์
- ๐ฑ ์ฌ์ฉ ์์
- ๐งฎ Wave Function Collapse ์๊ณ ๋ฆฌ์ฆ
- ๐๏ธ ์์คํ ์ํคํ ์ฒ
- โก ์ฑ๋ฅ ๋ฐ ์ต์ ํ
- ๐จ ์๊ฐํ ์์คํ
- ๐ ํ๋ก์ ํธ ๋ฉํธ๋ฆญ
- ๐ ๊ธฐ์ ์ ์ฐ์์ฑ
- ๐ ๏ธ ์์ํ๊ธฐ
- ๐ ํ์ต ๋ฐ ์ฐ๊ตฌ
- ๐ ์ ๋ฌธ์ ์ํฅ
- ๐ ๊ฐ๋ฐ ํํฉ ๋ฐ ๋ก๋๋งต
- ๐ ํฌํธํด๋ฆฌ์ค ํ์ด๋ผ์ดํธ
ProceduralWorld๋ Unreal Engine 5.4์์ ์ค์๊ฐ์ผ๋ก ๋ณต์กํ ๊ฑด์ถ ๊ตฌ์กฐ๋ฌผ๊ณผ ๋์ ํ๊ฒฝ์ ์ ์ฐจ์ ์ผ๋ก ์์ฑํ๊ธฐ ์ํด ์ค๊ณ๋ 3D ๊ณต๊ฐ์ ์ต์ฒจ๋จ Wave Function Collapse (WFC) ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ์ฒด์ ๋๋ค.
- ์ค์๊ฐ ์ฑ๋ฅ: ๋ช ์ด ๋ด์ ๋ณต์กํ 3D ๊ตฌ์กฐ ์์ฑ
- ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ: ๋ชจ๋ํ ์ปดํฌ๋ํธ ์ค๊ณ์ SOLID ์์น
- ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ: ํ๋ฅ ์ ์ ํ์ ํตํ ์ํธ๋กํผ ๊ธฐ๋ฐ ์ ์ฝ ๋ง์กฑ
- ํ๋ก๋์ ์ค๋น: ์ค๋ ๋ ์์ ์์ ์ ํตํ ์์ ํ ๋น๋๊ธฐ ์ฒ๋ฆฌ
- ์๊ฐ์ ์ฐ์์ฑ: 100๊ฐ ์ด์์ ๊ฑด์ถ ์์ ์ ํตํ ๋ค์ค ๋ฐ์ด์ด ์ง์
// ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ํ์
์์ ํจ์ ํฌ์ธํฐ ์์คํ
template<typename T>
using TStaticFuncPtr = typename TBaseStaticDelegateInstance<T, FDefaultDelegateUserPolicy>::FFuncPtr;
// ๋ฐํ์ ์๊ณ ๋ฆฌ์ฆ ๊ตฌ์ฑ์ ์ํ ์ ๋ต ํจํด
FCollapseStrategy strategy(
ECollapseCellSelectStrategy::ByEntropy,
ECollapseTileInfoSelectStrategy::ByWeight
);
WFC3DActor์ Property ์ฐฝ์์ Generate Mesh ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์๋ก์ด 3D ๊ตฌ์กฐ๊ฐ ์ฆ์ ์์ฑ๋ฉ๋๋ค. ๋งค๋ฒ ๋ค๋ฅธ ํจํด์ ๊ฑด์ถ๋ฌผ์ด ์ ์ฐจ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ฉฐ, ๋์ผํ ์ ์ฝ ์กฐ๊ฑด ํ์์๋ ๊ณ ์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
Grid Dimension ์์ฑ์ ํตํด ์์ฑํ ๊ตฌ์กฐ๋ฌผ์ ํฌ๊ธฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค. 5x5x5๋ถํฐ ๋ ํฐ ๊ทธ๋ฆฌ๋๊น์ง ์ง์ํ๋ฉฐ, ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ณต์ก์ฑ๊ณผ ์์ฑ ์๊ฐ์ด ์กฐ์ ๋ฉ๋๋ค.
์์ฑ๋ ๋ฉ์๋ ์ธ๋ถ์์ ๋ณด์์ ๋ ๋ชจ๋ ๋ฉด์ด ์๋ฒฝํ๊ฒ ์ฐ๊ฒฐ๋ ์ผ์ฒดํ ๊ตฌ์กฐ๋ฌผ์ ํ์ฑํฉ๋๋ค. WFC ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฝ ์กฐ๊ฑด ๋๋ถ์ ์ด์ํ ์ฐ๊ฒฐ๋ถ๋ ๋ถ์์ ํ ๊ตฌ์กฐ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
DataAsset Generator๋ฅผ ํตํด ๊ธฐ๋ณธ ๋ฉ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๋ฉด ์๋์ผ๋ก WFC์ ํ์ํ ํธํ์ฑ ๊ท์น๊ณผ ์ ์ฝ ์กฐ๊ฑด์ด ์์ฑ๋ฉ๋๋ค. ์๋ ์ค์ ์์ด๋ ์์คํ
์ด ์ง๋ฅ์ ์ผ๋ก ๊ฐ ๋ฉด์ ์ฐ๊ฒฐ ๊ฐ๋ฅ์ฑ์ ๋ถ์ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
์์ฑ๋ ๊ตฌ์กฐ๋ฌผ์ ๊ฐ ๋ธ๋ก์ ๋
๋ฆฝ์ ์ธ StaticMeshComponent๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ณ ๋ธ๋ก์ ๋จธํฐ๋ฆฌ์ผ, ์ฝ๋ฆฌ์ , ๋ฌผ๋ฆฌ ์์ฑ ๋ฑ์ ์ธ๋ฐํ๊ฒ ์กฐ์ ํ ์ ์์ผ๋ฉฐ, ๋ฐํ์์์๋ ๋์ ์ผ๋ก ์์ ๊ฐ๋ฅํฉ๋๋ค.
๋ชจ๋ ๋ฉ์ ์ปดํฌ๋ํธ ๊ฐ์๋ 0.0001 ๋จ์์ ์ ๋ฐ๋๋ก ํ์ด๋ ์ค์ฒฉ ์์ด ์๋ฒฝํ๊ฒ ์ ๋ ฌ๋ฉ๋๋ค. ๊ณ ํ์ง ๋ ๋๋ง๊ณผ ์ ํํ ์ฝ๋ฆฌ์ ์ฒ๋ฆฌ๋ฅผ ์ํด ์๊ฒฉํ ์ขํ ์์คํ
๊ณผ ์ค๋
ํ ๋ก์ง์ ์ ์ฉํฉ๋๋ค.
WFC ์๊ณ ๋ฆฌ์ฆ์ ์์์ญํ์ ์๋ฆฌ๋ฅผ ์ ์ฐจ์ ์์ฑ์ ์ ์ฉํ์ฌ, ์ ๋ค์ ํ๋ฅ ์ ์ค์ฒฉ ์ํ๋ก ์ ์งํ๋ค๊ฐ ๊ด์ฐฐ ์ ๊ฒฐ์ ์ ๊ฐ์ผ๋ก ๋ถ๊ดด์ํค๋ ๋ฐฉ์์ ๋๋ค.
graph TD
A[๐ฏ ์ ์ฝ ์กฐ๊ฑด ๋ถ์] --> B[๐ ์ค์ฒฉ ์ํ ์ด๊ธฐํ]
B --> C[๐ ์ํธ๋กํผ ์ ํ]
C --> D[๐ก ์ ์ฝ ์ ํ]
D --> E{์๋ฃ?}
E -->|์๋์ค| C
E -->|์| F[๐จ ์๊ฐ์ ์์ฑ]
- ์ ์ฝ ์ ์: 6๋ฉด ์ ์ก๋ฉด์ฒด ํ์ผ ํธํ์ฑ ๊ท์น
- ํ๋ฅ ์ ์ด๊ธฐํ: ๋ชจ๋ ์ ์ด ์์ ์ค์ฒฉ ์ํ๋ก ์์
- ์ํธ๋กํผ ๊ธฐ๋ฐ ์ ํ: ๊ฐ์ฅ ๋ฎ์ ์ํธ๋กํผ ์ ์ ๋ถ๊ดด์ฉ์ผ๋ก ์ ํ
- BFS ์ ํ: ์ฃผ๋ณ ๊ฐ๋ฅ์ฑ์ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธ
- ์๊ฐ์ ๊ตฌํ: ๋ฐ์ด์ด ๋ณํ์ผ๋ก 3D ๋ฉ์ ์์ฑ
AWFC3DActor (๊ฒ์ ์๋ ์ธํฐํ์ด์ค)
โโโ UWFC3DController (์์คํ
์ค์ผ์คํธ๋ ์ดํฐ)
โ โโโ UWFC3DAlgorithm (ํต์ฌ WFC ์์ง)
โ โโโ UWFC3DVisualizer (๋ฉ์ ์์ฑ)
โ โโโ UWFC3DGrid (3D ๋ฐ์ดํฐ ๊ตฌ์กฐ)
โโโ UWFC3DModelDataAsset (๊ตฌ์ฑ)
UFUNCTION(BlueprintCallable)
void ExecuteAsync(const FWFC3DExecutionContext& Context);
UPROPERTY(BlueprintAssignable)
FOnWFC3DExecutionCompleted OnExecutionCompleted;// ์ค๋ ๋ ์์ ๋น๋๊ธฐ ์คํ
std::atomic<bool> bIsRunningAtomic;
TUniquePtr<FAsyncTask<FWFC3DAlgorithmAsyncTask>> AsyncTask;
// ์ ๋ต ํจํด ๊ตฌํ
FCollapseStrategy CollapseStrategy;
FPropagationStrategy PropagationStrategy;- ๋น๋๊ธฐ ํ์คํฌ ์์คํ
:
FAsyncTask๋ฅผ ํตํ ๋ฐฑ๊ทธ๋ผ์ด๋ WFC ์คํ - ์ค๋ ๋ ์์ ์ฑ:
std::atomic๋ฐFCriticalSection์ฌ์ฉ - ๋ ผ๋ธ๋กํน UI: ๋ฉ์ธ ์ค๋ ๋ ์ฐจ๋จ ์๋ ์ค์๊ฐ ์งํ๋ฅ ์ ๋ฐ์ดํธ
- RAII ํจํด: ์ค๋งํธ ํฌ์ธํฐ (
TUniquePtr,TSharedPtr) - ๊ฐ์ฒด ํ๋ง: GC ์ต์ ํ๋ฅผ ์ํ ๋ฉ์ ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ
- ๋นํธ ๋ฐฐ์ด: ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ์ํ ํํ
// O(log n) ์ ๊ทผ ์๊ฐ์ O(nยณ) ๊ณต๊ฐ
TMap<FIntVector, UStaticMeshComponent*> GridToMeshMap;
// ๋ฒ์ ์ ํ ์ ํ
ERangeLimitStrategy: Sphere/Cube RangeLimited- ํ ๋ง ๋ณํ: ๋นจ๊ฐ, ์ด๋ก, ํ๋ ๋ฐ์ด์ด ๋จธํฐ๋ฆฌ์ผ
- ๊ฐ์ค์น ๊ธฐ๋ฐ ์ ํ: ํ๋ฅ ์ ํ์ผ ๋ณํ ์ ํ
- ์ค์๊ฐ ์ ์ฉ: ์๊ณ ๋ฆฌ์ฆ ์คํ๊ณผ ๋์ ์๊ฐํ
๐๏ธ ๊ฑด์ถ ์์:
โโโ ๊ธฐ๋ณธ ๊ตฌ์กฐ: ๋ฒฝ, ๋ฐ๋ฅ, ์ฒ์ฅ (6๋ฐฉํฅ)
โโโ ๋ณต์กํ ์กฐ์ธํธ: ๋ชจ์๋ฆฌ, ๊ต์ฐจ์ (12๊ฐ ์ด์ ๋ณํ)
โโโ ๊ณ ๊ธ ์ปดํฌ๋ํธ: InBackRight, InDownBack, InUpBack
โโโ ๋จธํฐ๋ฆฌ์ผ ๋ณํ: ์ปดํฌ๋ํธ๋น 4๊ฐ ์ด์ PBR ๋ณํ
๐ ์์ค ํ์ผ: 25๊ฐ ์ด์์ C++ ๊ตฌํ ํ์ผ
๐ ์ฝ๋ ๋ณต์ก๋: 5,000์ค ์ด์ (์ฃผ์ ์ ์ธ)
๐๏ธ ํต์ฌ ํด๋์ค: 15๊ฐ ์ด์์ ์ํคํ
์ฒ ์ปดํฌ๋ํธ
๐ ๋ฐ์ดํฐ ๊ตฌ์กฐ: 20๊ฐ ์ด์์ ์ต์ ํ๋ ๊ตฌ์กฐ์ฒด
โก ๊ณต๊ฐ ํจ์: 100๊ฐ ์ด์์ ๋ฉค๋ฒ ๋ฉ์๋
๐ฏ ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง: 5x5x5 ๊ทธ๋ฆฌ๋ ๊ฒ์ฆ
๐ฏ ์์ฑ ์๋: 5ยณ ๊ทธ๋ฆฌ๋ 1์ด ๋ฏธ๋ง
๐พ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: O(nยณ) ์ต์ ํ๋ ํ ๋น
๐ ์ฑ๊ณต๋ฅ : 99% ์ด์ ์ ์ฝ ๋ง์กฑ
๐ ์ค๋ ๋ ํจ์จ์ฑ: 100% ๋น๋๊ธฐ ์์
์ฑ๊ณต
- ํ ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ: ์ปดํ์ผ ํ์ ํ์ ์์ ์ฑ
- ๋ชจ๋ C++17: ์ค๋งํธ ํฌ์ธํฐ, ๋ฒ์ ๊ธฐ๋ฐ ๋ฃจํ, ๊ตฌ์กฐ์ ๋ฐ์ธ๋ฉ
- ์ธ๋ฆฌ์ผ ํตํฉ: ๋ธ๋ฃจํ๋ฆฐํธ ์ํธ ์ด์ฉ, ๋ธ๋ฆฌ๊ฒ์ดํธ ์์คํ , ๋ฆฌํ๋ ์
- SOLID ์์น: ๋จ์ผ ์ฑ ์, ์์กด์ฑ ์ญ์
- ์ ๋ต ํจํด: ๋ฐํ์ ์๊ณ ๋ฆฌ์ฆ ๊ตฌ์ฑ
- ๊ด์ฐฐ์ ํจํด: ๋ธ๋ฆฌ๊ฒ์ดํธ ๊ธฐ๋ฐ ์ด๋ฒคํธ ์ํคํ ์ฒ
- ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ: ์ค๋ ๋ ์์ ๋์ ์คํ
- ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ: RAII, ์ค๋งํธ ํฌ์ธํฐ, ๊ฒฝ๊ณ ๊ฒ์ฌ
- ์ค๋ ๋ ์์ ์ฑ: ์์์ ์ฐ์ฐ, ์๊ณ ์น์
- ์ค๋ฅ ์ฒ๋ฆฌ: ํฌ๊ด์ ์ธ ๊ฒ์ฆ ๋ฐ ๋ณต๊ตฌ
Unreal Engine 5.4 ์ด์
Visual Studio 2022 (C++17 ์ง์)
Windows 10/11 (64๋นํธ)
์ต์ 16GB RAM (๋ํ ๊ทธ๋ฆฌ๋์ฉ ๊ถ์ฅ)# 1. ๋ฆฌํฌ์งํ ๋ฆฌ ํด๋ก
git clone https://github.com/devouring123/ProceduralWorld.git
# 2. ํ๋ก์ ํธ ํ์ผ ์์ฑ
ProceduralWorld.uproject ์ฐํด๋ฆญ โ Generate Visual Studio Files
# 3. ์๋ฃจ์
๋น๋
ProceduralWorld.sln ์ด๊ธฐ โ ๋น๋ โ ์๋ฃจ์
๋น๋
# 4. ์คํ ๋ฐ ํ
์คํธ
UE5 ์๋ํฐ์์ ์ด๊ธฐ โ WFCDataGeneratingLevel ๋ก๋ โ ํ๋ ์ด// ๋ธ๋ฃจํ๋ฆฐํธ ๊ตฌ์ฑ
BP_WFC3DActor ์ค์ :
- Grid Dimension: (10, 10, 5)
- Model Data: DA_WFC3DModel
- Random Seed: [์ฌ์ฉ์ ์ ์ ๊ฐ]
- Auto Execute On Begin Play: โ- ์๋ณธ WFC ์ฐ๊ตฌ: mxgmn/WaveFunctionCollapse
- 2D ๊ตฌํ: devouring123/WFC2D
- ์ ์ฝ ๋ง์กฑ: CSP ์ด๋ก ๋ฐ ํ๋ฅ ์ ์๊ณ ๋ฆฌ์ฆ
- UE5 PCG ํ๋ ์์ํฌ: ์ ์ฐจ์ ์ฝํ ์ธ ์์ฑ ํตํฉ
- ๋ฉํฐ์ค๋ ๋ฉ: ์ธ๋ฆฌ์ผ์ ๋น๋๊ธฐ ํ์คํฌ ์์คํ
- ๋ธ๋ฃจํ๋ฆฐํธ ํตํฉ: C++์์ ๋ธ๋ฃจํ๋ฆฐํธ ํต์ ํจํด
โ
๋ณต์กํ CSP ์๋ฃจ์
: 3D ์ ์ฝ ๋ง์กฑ ์ต์ ํ
โ
ํ๋ฅ ์ ์์คํ
: ์ผ๊ด์ฑ ๋ณด์ฅ์ ํตํ ๊ฐ์ค์น ๋ฌด์์ํ
โ
์ค์๊ฐ ์ฑ๋ฅ: ์ํธ์์ฉ ์ ํ๋ฆฌ์ผ์ด์
์๋ต ์๊ฐ
โ
๊ธฐ์
ํจํด: ํ์ฅ ๊ฐ๋ฅํ ์ค๊ณ์ SOLID ์์น
โ
๋์ ํ๋ก๊ทธ๋๋ฐ: ์ค๋ ๋ ์์ ๋ฉํฐ์ฝ์ด ํ์ฉ
โ
์ฑ๋ฅ ์์ง๋์ด๋ง: ๋ฉ๋ชจ๋ฆฌ ๋ฐ CPU ์ต์ ํ
โ
๊ณ ๊ธ UE5 ๊ธฐ๋ฅ: PCG, ๋ธ๋ฆฌ๊ฒ์ดํธ, ๋ฆฌํ๋ ์
์์คํ
โ
ํฌ๋ก์ค ํ๋ซํผ ํธํ์ฑ: Windows/Mac/Linux ์ง์
โ
๋์์ด๋ ์นํ์ ๋๊ตฌ: ๋ธ๋ฃจํ๋ฆฐํธ ํตํฉ ๋ฐ ๋น์ฃผ์ผ ์คํฌ๋ฆฝํ
ํ์ฌ ์์คํ ์ ๋จ์ผ ๊ทธ๋ฆฌ๋ WFC ์๊ณ ๋ฆฌ์ฆ์ ์์ฑ๋ ๊ตฌํ์ฒด์ ๋๋ค:
- โ 5ร5ร5 ๊ทธ๋ฆฌ๋์์ ์์ ์ ์ธ 3D ๊ตฌ์กฐ ์์ฑ
- โ ์ค์๊ฐ ์๊ฐํ ๋ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ
- โ ๋ค์ค ๋ฐ์ด์ด ์ง์ (100๊ฐ ์ด์ ๊ฑด์ถ ์์ )
- โ ๋ธ๋ฃจํ๋ฆฐํธ ํตํฉ ๋ฐ ์ฌ์ฉ์ ์นํ์ ์ธํฐํ์ด์ค
๋ชฉํ: ํ์ฌ ์์คํ ์ ํ๊ณ์ ํด๊ฒฐ ๋ฐ ์๋ํ ๊ตฌํ
- ๐ ๊ฑด๋ฌผ ์ฐ๊ฒฐ์ฑ ๋ณด์ฅ: 4ร4ร4+ ๊ทธ๋ฆฌ๋์์ ๋จ์ผ ๊ฑด๋ฌผ ์์ฑ ๋ณด์ฅ
- โ๏ธ ์๋ ๋ฉ์ ๋ถํ : ๊ฑด๋ฌผ ๋ฉ์ โ WFC ๋ฐ์ดํฐ ์์ ์๋ํ
- ๐ค AI ํธํ์ฑ ํ๋จ: 3D ํ์ ๊ธฐ๋ฐ ์๋ ๋ฉด ํธํ์ฑ ๋ถ์
- ๐ 95% ์์ ์๊ฐ ๋จ์ถ: ์์์ ์ต์ํ๋ก ์์ฐ์ฑ ๊ทน๋ํ
ํต์ฌ ๊ธฐ์ : ์ฐ๊ฒฐ์ฑ ๋ถ์, ๊ณต๊ฐ ์ธ์, ์ง์ค๋ฉํธ๋ฆฌ ๋งค์นญ
๋ชฉํ: ์ค๊ฐ ๊ท๋ชจ ๊ทธ๋ฆฌ๋๋ฅผ ์ํ ๊ณ์ธต์ ๊ตฌ์กฐ ๊ตฌํ
- ๐ 2-๋ ๋ฒจ ๊ณ์ธต: SuperGrid โ SubGrid ๋ถํ ์์คํ
- ๐ ๊ฒฝ๊ณ๋ฉด ๊ด๋ฆฌ: ์ธ์ ๊ทธ๋ฆฌ๋ ๊ฐ ์๋ฒฝํ ์ฐ๊ฒฐ์ฑ ๋ณด์ฅ
- โก ๋ณ๋ ฌ ์ฒ๋ฆฌ: ๋ ๋ฆฝ์ ๊ทธ๋ฆฌ๋์ ๋์ ์คํ
- ๐ ํ์ฅ ๋ฒ์: 32ร32ร32 ๊ทธ๋ฆฌ๋๊น์ง ์์ ์ ์ง์
ํต์ฌ ๊ธฐ์ : ๊ทธ๋ฆฌ๋ ๋ถํ , ๊ฒฝ๊ณ ๋๊ธฐํ, ๋ฐฐ์น ์คํ
๋ชฉํ: ๋๊ท๋ชจ ๊ทธ๋ฆฌ๋๋ฅผ ์ํ ๋ฌดํ ์ค์ฒฉ ๊ตฌ์กฐ
- โพ๏ธ ๋ฌด์ ํ ํ์ฅ: ์ด๋ก ์ ์ผ๋ก 1000ร1000ร1000+ ์ง์
- ๐ง ์ ์์ ๋ถํ : ๋ณต์ก๋ ๊ธฐ๋ฐ ์๋ ๋ ๋ฒจ ๊ฒฐ์
- ๐พ ์ง์ฐ ๋ก๋ฉ: ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ๋์ฉ๋ ์ฒ๋ฆฌ
- ๐ฎ ์ค์๊ฐ ์์ฑ: ๊ฑฐ๋ ๋์/๋์ ์ ์ค์๊ฐ ์ ์ฐจ์ ์์ฑ
ํต์ฌ ๊ธฐ์ : ์ฌ๊ท์ ๋ ธ๋, ํธ๋ฆฌ ๊ตฌ์กฐ, ๋ฉ๋ชจ๋ฆฌ ์คํธ๋ฆฌ๋ฐ
๐ ์ฐ๊ฒฐ์ฑ ๋ถ์ โ ๐ง ์๋ ๋ฉ์ ๋ถํ โ ๐ค AI ํธํ์ฑ ํ๋จ
- UWFC3DConnectivityAnalyzer: DFS ๊ธฐ๋ฐ ์ฐ๊ฒฐ ์ปดํฌ๋ํธ ๋ถ์
- UWFC3DMeshSlicer: ๋ณผ๋ฅจ ๊ธฐ๋ฐ ์๋ ๋ฉ์ ์ฌ๋ผ์ด์ฑ
- UWFC3DGeometryMatcher: 3D ํ์ ๊ธฐ๋ฐ ํธํ์ฑ ํ๋จ
- UWFC3DAutoDataGenerator: ์์ ์๋ํ ๋ฐ์ดํฐ ์์ฑ ํ์ดํ๋ผ์ธ
๐ข SuperGrid โ ๐ SubGrid โ ๐งฑ AtomicGrid
- UWFC3DHierarchicalController: ๊ณ์ธต์ ์คํ ์ ์ด
- UWFC3DBoundaryManager: ๋ค์ค ๊ทธ๋ฆฌ๋ ๊ฒฝ๊ณ๋ฉด ๊ด๋ฆฌ
- UWFC3DIntelligentScheduler: ์์กด์ฑ ๊ธฐ๋ฐ ๋ณ๋ ฌ ์ค์ผ์ค๋ง
๐ MasterGrid โ ๐๏ธ District โ ๐๏ธ Block โ ๐ Building
- UWFC3DGridNode: ์ฌ๊ท์ ํธ๋ฆฌ ๋ ธ๋ ์์คํ
- UWFC3DHierarchyManager: ์ ์์ ๋ถํ ์ ๋ต ๊ด๋ฆฌ
- UWFC3DLazyLoadingManager: ์ง์ฐ ๋ก๋ฉ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
| ๋ฒ์ | ์ง์ ๊ทธ๋ฆฌ๋ | ์์ฑ ์๊ฐ | ์ฑ๊ณต๋ฅ | ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ |
|---|---|---|---|---|
| v1.0 | 5ร5ร5 | 1์ด | 99%+ | ๊ธฐ์ค์ |
| v2.0 | 8ร8ร8 | 30์ด | 99%+ | ๋์ผ |
| v3.0 | 32ร32ร32 | 5๋ถ | 95%+ | +50% |
| v4.0 | ๋ฌด์ ํ | ๊ฐ๋ณ | 90%+ | +95% |
- AAA ๊ฒ์: ๋๊ท๋ชจ ์ ์ฐจ์ ๋์ ์์ฑ
- ์ธ๋ ๊ฒ์: ๋ฌดํ ๋์ /๋ก๊ทธ๋ผ์ดํฌ ์์คํ
- VR/AR: ์ค์๊ฐ ๊ณต๊ฐ ์์ฑ ๋ฐ ์ ์
- ๊ฑด์ถ ์๋ฎฌ๋ ์ด์ : ์ค์ ๊ฑด์ถ ๋๋ฉด ๊ธฐ๋ฐ 3D ๋ชจ๋ธ ์๋ ์์ฑ
- ๋์ ๊ณํ: ๋๊ท๋ชจ ๋์ ์๋ฎฌ๋ ์ด์ ๋ฐ ์ต์ ํ
- ์ํ/์ ๋๋ฉ์ด์ : ๋ฐฐ๊ฒฝ ์ธํธ ์๋ ์์ฑ ํ์ดํ๋ผ์ธ
- ์ ์ฐจ์ ์์ฑ ์ฐ๊ตฌ: ํ์ ์ฐ๊ตฌ ๋ฐ ๋ ผ๋ฌธ ๋ฐํ
- AI ํ๋ จ: ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ํ๋ จ์ฉ ๋ฌดํ ๋ฐ์ดํฐ ์์ฑ
- ๊ต์ก ๋๊ตฌ: ๊ฒ์ ๊ฐ๋ฐ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ๊ต์ก ํ๋ซํผ
์ด ํ๋ก์ ํธ๋ ๋ค์์ ์ ์ฆํฉ๋๋ค:
- ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ: ํ๋ก๋์ ์ฝ๋์์์ ๋ณต์กํ CS ๊ฐ๋
- ์ฑ๋ฅ ์์ง๋์ด๋ง: ๋ฉํฐ์ค๋ ๋, ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ์๋ฃจ์
- ์ํํธ์จ์ด ์ํคํ ์ฒ: ์ ์ง๋ณด์ ๊ฐ๋ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ค๊ณ
- ๊ฒ์ ์์ง ๋ง์คํฐ๋ฆฌ: ์ ๋ฌธ๊ฐ๊ธ ์ธ๋ฆฌ์ผ ์์ง ๊ฐ๋ฐ
- ๋ฌธ์ ํด๊ฒฐ: ์ ์ฐจ์ ์์ฑ ๋ฌธ์ ์ ๋ํ ํ์ ์ ์๋ฃจ์
๐ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋์์ด ๋์๋ค๋ฉด ์คํ๋ฅผ ๋๋ฌ์ฃผ์ธ์! ๐
๐ป์ โ๋ก ์ ์ํ devouring123