关于contentsTransform。 3D Transform矩阵如何工作?

时间:2017-02-23 12:18:28

标签: ios swift matrix scenekit

我听说我可以使用contentsTranform修改纹理。但是怎么样? contentsTranform是一个SCNMatrix,从doc我可以使用SCNMatrix4MakeTranslation,SCNMatrix4MakeRotation和SCNMatrix4MakeScale函数来创建一个Matrix。但我不知道如何像第二张图片一样显示纹理。 photoFrame是1:2,纹理是1:1。

enter image description here

enter image description here

enter image description here

两次编辑:

我在材质编辑器中更改了比例和偏移以及WrapT属性。效果很好。但是当我运行它时,我无法获得相同的效果。所以我尝试通过更改contentsTransform属性来编程。但是规模,偏移它们都会影响contentsTransform。 因此,如果offSet为(0,-4.03)且Scale为(1,1.714),那么contentsTransform 是什么?

enter image description here

-

第三次修改

现在我知道什么是解决方案。

第一

不要将.dae文件作为SCNScene加载。您支持使用.scn文件。发生错误是因为我使用.dae文件来修改场景编辑器中的纹理。然后,当我运行它时,我无法得到相同的结果。之后我将其更改为.scn文件并修改纹理。我在真实设备上获得了正确的效果。 您只需将.dae转换为.scn文件,然后按>编辑器 - >转换为SceneKit场景文件格式。

第二

offset和Scale值都会影响contentsTransform属性的值。我在材质编辑器视图中修改了纹理。如果offSet为(0,-4.03)且Scale为(1,1.714),则contentsTransform属性为SCNMatrix4(m11:1.0,m12:0.0,m13:0.0,m14:0.0,m21:0.0,m22:1.714,m23 :0.0,m24:0.0,m31:0.0,m32:0.0,m33:1.0,m34:0.0,m41:0.0,m42:-4.03,m43:0.0,m44:1.0)。通过搜索文档,我发现了如何获得这个属性。

b

确保MakeScale * MakeTranslation

所以,这就是我的问题的答案。 感谢您阅读

0 个答案:

没有答案