HIT해
[iOS/Swift] fbx Xcode에 출력하기 본문
디자인 툴에서 obj dae 로 내보냈을때 텍스쳐 하나하나 설정을 해주어야 하기에 fbx 파일로 SceneKit에 출력하기로 했다.
하지만 SceneKit 에서는 fbx 파일이 scn 으로 변환되지 않는다.( 왜...? 다 해준다며... )
그래서 fbx > usdz > scn 으로 바꿔줘야한다.
1. fbx to usdz
fbx 파일을 Reality Converter 로 열어준다.
우측 상단의 내보내기를 눌러서 저장하면 usdz 파일로 변환이 된다..!
2. usdz to scn
아주 간단하다.
Xcode > File > New > File > Scene Catalog 로 카탈로그를 만들어주면 SceneKit Scene Tool 이 나오는데
여기에 드래그 앤 드랍을 해준다.
3. 파일 출력하기
let scene = SCNScene(named: "폴더명.scnassets/파일명.scn") ?? SCNScene()
이렇게 하면 fbx 모델을 화면에 출력할 수 있다.
이때 주의할 점이 있다.
obj 나 dae 와 다르게 fbx 모델은 다른 파일 유형들보다 모델의 크기가 크게 설정되어 있다.
그래서 아무리 카메라 시점을 축소해도 카메라가 모델 내부에서 빠져나오지 못해 모델의 모습을 볼 수가 없다.
아래의 코드를 추가해 모델의 크기를 줄여주자
let scene = SCNScene(named: "Dols.scnassets/last.scn") ?? SCNScene()
// 너무 커서 그랬다..
for node in scene.rootNode.childNodes {
node.scale = SCNVector3(x: 0.1, y: 0.1, z: 0.1) // 스케일 값을 조정하여 모델의 크기를 조절
}
위의 코드를 적용하면 모델이 제대로 보인다
+ fbx 로는 블렌더 상에서 설정해둔 질감 초기값을 불러오지 못한다.
physically Based 를 하면 블렌더에서 만들어둔 초기값이 가져와져야하는데 2단변환을 하는 과정을 거쳐서일까 초기값을 불러오지 못한다.
물론 위와 같이 SceneKit Tool 에서 재질을 변경할 수 있지만 여기서 한다는건... ( 지옥일 것이다... )
다음 포스팅은 블렌더 초기값을 가져올 수 있는 dae 파일 불러오는 법을 알아볼 것이다.
'Swift > Swift 개발 노트' 카테고리의 다른 글
[iOS/Swift] updateUIView 가 실행되지 않아요. (0) | 2024.08.20 |
---|---|
[iOS/SceneKit] SceneView dae 파일 불러오기 (0) | 2024.08.19 |
[iOS/SceneKit] .scn Material 을 바꿔보자 (0) | 2024.08.18 |
[iOS/SceneKit] SCNView (0) | 2024.08.18 |
[iOS/SceneKit] SCNScene 알아보기 (0) | 2024.08.17 |