[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) }