[swift] scenekit / テクスチャをNodeにRepeatして貼り付ける方法
テクスチャを使用しないでタイル調の模様の床を作成するコードは、こちらで紹介したが、
やはり、テクスチャをリピートしてタイル調の床を作成してみたい。
使用したテクスチャはこちら↓

そんな時は下記のコードで実現することができる。
override func viewDidLoad() {
super.viewDidLoad()
//カメラなどの環境設定は省略
setupFloor(scene: scene)
}
func setupFloor(scene:SCNScene) {
//マテリアルを作成
let Material = SCNMaterial()
//テクスチャ画像を指定
Material.diffuse.contents = UIImage(named: "art.scnassets/floor.png")
//横方向にRepeat
Material.diffuse.wrapS = SCNWrapMode.repeat
//縦方向にRepeat
Material.diffuse.wrapT = SCNWrapMode.repeat
//面に対してどれだけRepeatさせるか、↓の例だと、横に10個、縦に10個テクスチャが配置される。
//この数値によりテクスチャ画像が伸縮させられる
Material.diffuse.contentsTransform = SCNMatrix4MakeScale(10, 10, 0)
//テクスチャが貼られたモデルの色を緑にする
Material.emission.contents = UIColor.green
//オブジェクトの透明度
Material.transparency = 0.5
//SCNPlaneを作成
let Tile = SCNPlane(width:10, height:10)
//マテリアルを適用
Tile.firstMaterial = Material;
//ノードを作成
let tileNode = SCNNode()
//ジオメトリを適用
tileNode.geometry = Tile;
//ノードの配置を設定
tileNode.position = SCNVector3Make(0, 0.1, 0);
//SCNPlaneはデフォルトでは立っているので、横に寝かせて床にする
tileNode.eulerAngles = SCNVector3(x:GLKMathDegreesToRadians(-90), y: 0, z: 0)
//シーンに追加
scene.rootNode.addChildNode(tileNode)
}