2017-09-06 17 views
2

私はシーンキットと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

答えて

0

を使用しています使用してみてください:

material.diffuse.wrapS = SCNWrapModeRepeat; 
material.diffuse.wrapT = SCNWrapModeRepeat; 

これは、材料が伸びない助け、単に自分自身に同じPNGのより多くを追加し続けるだろう。

また、幅と高さに設定することにより、材料のスケールを設定することができます。

CGFloat width = self.planeGeometry.width; 
    CGFloat height = self.planeGeometry.length; 

    material.diffuse.contentsTransform = SCNMatrix4MakeScale(width, height, 1); 

私はここでの目的Cで働いているが、これを翻訳する非常に簡単でなければなりません申し訳ありません。

また、いくつかの良いチュートリアルは、このリンクで見つけることができます:

https://blog.markdaws.net/apple-arkit-by-example-ef1c8578fb59

関連する問題