にテクスチャを考えると、フォトフレームのテクスチャが正方形の画像です。しかし、拡散したコンテンツに設定すると、その効果はひどいものになります。では、四角形の枠内に正方形の画像を表示することはできますが、画像を伸ばすことはできません。
が正しい方法
答えて
表示される内容は、テクスチャがマップされるジオメトリによって異なります。それらの画像フレームがSCNPlane
またはSCNBox
ジオメトリであると仮定すると、フレームの面は、ジオメトリの寸法またはアスペクト比に関係なく、右下の(0,0)
から左下の(1,1)
の範囲のテクスチャ座標を持ちます。
SceneKitテクスチャは、イメージの左上がテクスチャ座標(0,0)
にあり、右下が(1,1)
にあり、イメージのピクセルサイズに関係なくイメージをマップします。したがって、アスペクト比がテクスチャイメージのアスペクト比と一致するジオメトリを持たない限り、画像が伸びるこのようなケースが見えます。
あなたのテクスチャを「解決」するために行うことができます物事のカップルがあります。
ノウ(または計算)あなたの画像のアスペクト比とジオメトリー(顔)あなたがそれを置くしたいです材料の
contentsTransform
を使用して画像を補正します。たとえば、幅が2で高さが1である
SCNPlane
があり、正方形の画像を割り当てた場合、画像は水平に引き伸ばされます。 をSCNMatrix4MakeScale(1,2,1)
で作成したマトリックスに設定すると、水平方向のテクスチャ座標が2倍になり、2:1平面のアスペクト比が固定されます。ジオメトリの面に半角画像を表示する場所に応じて、翻訳が必要な場合もあります。Xcodeのシーンエディタでこれを行う場合、
contentsTransform
はマテリアルエディタの「オフセット」、「スケール」、および「回転」コントロールで、スクリーンショットの画像を割り当てた場所の下にあります。ジオメトリのアスペクト比とイメージのサイズに関する情報を少なくとも知り(または計算し)、修正されたテクスチャイメージを作成してフィットさせます。
たとえば、上記のように2:1の平面を持ち、その上に320x480の画像を配置する場合、960x480のサイズの新しいテクスチャ画像を作成します。つまり、平面のアスペクト比に一致します。このイメージを使用して、必要な任意のスタイルの背景を作成し、320x480イメージをその背景の上に合成して、任意の位置に配置することができます。
- 1. 正しい方法*
- 2. 正しい方法
- 3. 正しい方法
- 4. 正しい方法
- 5. Interface C#のレイアウト方法が正しい
- 6. 方法OnTappedが正しい署名
- 7. 正しい方法は
- 8. 正しい方法(pracmaパッケージ)
- 9. 正しいキャッシュ方法(
- 10. 正しい方法はマングース
- 11. 正しい方法は
- 12. 正しい方法は
- 13. 正しい方法は
- 14. ログの正しい方法
- 15. 正しいスレッド方法
- 16. 正しい方法:: date_time`
- 17. 正しい方法は
- 18. wxWidgetsの - 正しい方法
- 19. 正しい方法はchart.js
- 20. 正しい方法減速
- 21. PayPalの支払い方法が正しく機能しない
- 22. 正しいネイティブマトリックス2dの正しい方法は?
- 23. 正しい方法:DAOデザインパターンのPHP + PDO
- 24. レールでの正しいテスト方法
- 25. 正しい方法?アイテムのコメントのリスト
- 26. メモリ管理の正しい方法
- 27. スレッド管理の正しい方法
- 28. 正しいgetopt/long_getoptの使用方法
- 29. DAOテスト:正しい方法ですか?
- 30. Bussnesロジックの正しい方法はAC
ちょっと、コンテンツを再生しようとしています。私はMatrixの仕事を理解していません。 – HaoDong
私にもう一度例を示してください。今私は2つの材料を持つ平面を持っています。その幅と高さは935.473と1349.419です。私は1:1の画像を持っています。それを拡散プロパティに設定したいのです。この写真は飛行機の中央に表示されるはずです。ですから、SCNMatrix4MakeTranslationとSCNMatrix4MakeScale関数にどのように使用すればいいですか?どうもありがとう。私の貧弱な英語の書いたスキルについては申し訳ありません。私の質問を理解できますか? – HaoDong