2016-09-06 15 views
2

디자이너는 에 attached two DAE files을 생성했습니다.SceneKit : 가져온 에셋의 크기를 제어하는 ​​방법, 하나의 DAE 파일이 SCNNode를 생성하는 반면 다른 하나는 "정상"

두 자산 모두 Cinema 4D에서 비교 가능한 크기입니다. 두 DAE 파일은 동일한 내보내기 프로세스로 생성되었습니다.

그러나 DAE 파일을 SceneKit 장면으로 가져 오면 다른 결과가 생성됩니다.

Chango.dae는 ~ 3x4x3의 경계 상자로 "보통"크기로 가져옵니다.

Tiki.dae는 ~ 155x325x140의 경계 상자를 사용하여 큰 크기로 가져옵니다. C4D 내부의 치수는 ~ 122x283x142입니다.

질문 :

1) 어떻게 당신이 SceneKit 장면에 "적합"확인 자산을 어떻게해야합니까? SCNNode의 "scale"속성을 사용하여 자산을 축소하거나 디자이너에게 특정 크기의 자산을 만들도록 요청 했습니까? SpriteKit과 UIKit에서 이것은 간단합니다. 자산 크기는 화면 크기와 직접적으로 관련이 있습니다 (예 : 20x20 아이콘은 해상도에 따라 그만큼 많은 화면 공간이 필요함). 그러나 SceneKit의 아날로그는 무엇입니까? 자산을 1x1x1 SCNNode에 맞게 만들려면 디자이너에게 자산을 만들 때 어떤 크기로 요청합니까?

2) 자산이 장면에 비해 너무 큰 경우 어떻게 축소합니까? 예를 들어 UIKit에서는 ScaleAspectFit과 같은 UIView에 맞게 이미지의 크기를 조절할 수 있습니다. SCNNode에 대한 아날로그가 아닌 것 같습니다. SCNNode의 scale 속성을 사용하면 모양이 변경되지만 에셋의 경계 상자는 변경되지 않습니다. 그리고 모양을 바꾸는 것조차 정확하지 않습니다. 예를 들어, Tiki.dae의 경우, 자산의 원래 높이 (경계 상자로 표시됨)는 324.36입니다. 그러나 Y 축척을 0.01로 설정하면 높이가 ~ 3.24가되지 않습니다. 그것은 3보다 작아지며, 높이 3 (1.5의 반지름)의 구 (sphere) 안에 편안하게 끼워서 증명할 수 있습니다.

Chango.dae

<unit name="meter"/> 

다른 경우에 그들은 표현됩니다 : 당신이 콜라다 파일을 열 경우

답변

3

하나의 경우 거리가 미터로 표시되는 것을 확인할 수 있습니다 센티미터 :

Tiki.dae

<unit meter="0.01" name="centimeter"/> 

따라서 1의 값은 한 파일에서 1m, 다른 파일에서 1cm를 의미합니다. 이것은 Cinema 4D에서 수정하거나 Collada 파일을 수동으로 편집하여 해결할 수있는 자산 문제입니다. 로딩 할 때 단위를 변환하려면 convertUnitsToMeters 옵션을 사용할 수도 있습니다.

+0

멋진 감사! 당신이 척도 노드를 수직으로 센터링하는 것에 관한 질문에 대답 할 수 있다면 어떻겠습니까? 크기가 조정 된 노드의 경계 상자가 변경되지 않고 크기 조정 된 높이를 사용하면 작동하지 않습니다. 정확한 높이가 아니라면 어떻게 스케일 된 노드를 부모 내부에 집중시킬 수 있습니까? 세부 정보 : http://stackoverflow.com/questions/39133619/scenekit-vertically-center-scaled-scnnode-inside-parent – Crashalot