SCNFloor에 텍스처 설정

2640 단어 SceneKitiOSARKit

소개



SCNFloor의 텍스처 설정에 집중했으므로 메모해 둡니다.

일반적으로 아무 것도 설정하지 않으면 아래 이미지와 같은 무기질 바닥이 표시됩니다.


SCNNode의 텍스처는 firstMaterial 프로퍼티의 diffuse 로 설정할 수 있다.
따라서 SCNFloor에서도 다음과 같이 텍스처를 설정해 보면 텍스처 이미지가 늘어나서 표시되어 예상대로 표시되지 않았다.
let floor = SCNFloor()
floor.firstMaterial?.diffuse.contents = UIImage(named: "art.scnassets/textures/grass.jpg")
let floorNode = SCNNode(geometry: floor)
scene.rootNode.addChildNode(floorNode)



원인과 대응



diffuse로 설정한 화상은 지정이 없으면 그 면에 맞추어 자동적으로 늘어나는 것이 원인.
이미지의 크기를 지정하면, 늘어나서 채우는 것이 아니라 이미지를 타일처럼 반복해서 맞추어 메우게 된다.
따라서 SCNMatrix4MakeScale에서 실제 텍스처 이미지와 같은 크기를 지정해 주면 된다.
let floor = SCNFloor()
floor.firstMaterial?.diffuse.contents = UIImage(named: "art.scnassets/textures/grass.jpg")
+ floor.firstMaterial?.diffuse.contentsTransform = SCNMatrix4MakeScale(128, 128, 0)
let floorNode = SCNNode(geometry: floor)
scene.rootNode.addChildNode(floorNode)

좋은 웹페이지 즐겨찾기