SCNFloorにテクスチャを設定する
はじめに
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)
Author And Source
この問題について(SCNFloorにテクスチャを設定する), 我々は、より多くの情報をここで見つけました https://qiita.com/noby111/items/e7e77ccf02608e355cd2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .