私はシーンキットと3D開発に新しいものが一般的です。私はARKitで遊んでいて、平面にテクスチャをフィットさせようとしていますが(本当にscnboxですが、表面だけです)、私は真剣に失敗していますまた、ウェブ上で役に立つものを見つけることができませんでした。テクスチャを表面にフィットさせる方法は? ARKit SceneKit Swift
私は非常に長い四角形のpng画像である道路のテクスチャを持っています。幅:高さの比率は約20:1です
arkitが私のために飛行機を見つけたら、テーブルの表面にこのテクスチャを適用したいと思います。私はアプリの起動前にテーブルの大きさを知らない。
現在、この平面にテクスチャを適用することができ、必要に応じてテクスチャを回転させることもできます。
私が達成したいのは、プレーンとテクスチャの短い辺が並んだ後、テクスチャがプレーンの終わりまで続くようにテクスチャを伸ばすことです(元の比率を維持する)平面の長さまたは比。ここで
はScnMaterialこれは、スケーリングを行うと、平面上のテクスチャを回転しなければならない機能ですclass func getRunwayMaterial() -> SCNMaterial {
let name = "runway"
var mat = materials[name]
if let mat = mat {
return mat
}
mat = SCNMaterial()
mat!.lightingModel = SCNMaterial.LightingModel.physicallyBased
mat!.diffuse.contents = UIImage(named: "./Assets.scnassets/Materials/runway/runway.png")
mat!.diffuse.wrapS = SCNWrapMode.repeat
mat!.diffuse.wrapT = SCNWrapMode.repeat
materials[name] = mat
return mat!
}
オブジェクトを取得する機能です。
func setRunwayTextureScale(rotation: Float? = nil, material: SCNMaterial? = nil) {
let texture = material != nil ? material! : planeGeometry.materials[4]
var m: SCNMatrix4 = SCNMatrix4MakeScale(1, 1, 1)
if(rotation != nil){
textureRotation = rotation! + textureRotation
}
m = SCNMatrix4Rotate(m, textureRotation, 0, 1, 0)
texture.diffuse.contentsTransform = m
}
私はここに空白を埋める助けてください、と誰もがこの種の操作を行う方法上の任意のリンクや記事が掲載されていた場合、私をリンクしてください!
ありがとうございます! イーサン
編集:ところで、私はXcodeの9