Hao*_*ong 5 matrix ios scenekit swift
我听说我可以使用contentsTranform修改纹理。但如何呢?contentTranform 是一个 SCNMatrix,从文档中我可以使用 SCNMatrix4MakeTranslation\xe3\x80\x81SCNMatrix4MakeRotation 和 SCNMatrix4MakeScale 函数来创建矩阵。但我不知道如何像第二张图片一样显示纹理。相框为 1:2,纹理为 1:1。
\n\n\n\n我在材质编辑器中更改了比例和偏移以及 WrapT 属性。而且效果也不错。但是当我运行它时,我无法得到相同的效果。所以我尝试通过更改 contentTransform 属性来进行编程。但比例、偏移量都会影响contentTransform。那么如果offSet是(0, -4.03)并且Scale是(1, 1.714),那么contentTransform是多少?
\n\n现在我知道解决办法是什么了。
第一的
不要加载 .dae 文件作为 SCNScene。支持使用.scn文件。发生错误是因为我使用 .dae 文件在场景编辑器中修改纹理。然后当我运行它时,我无法得到相同的结果。我将其更改为.scn文件并修改纹理后。我在真实设备上得到了正确的效果。您可以通过->编辑器->转换为SceneKit场景文件格式简单地将.dae转换为.scn文件。
第二
偏移量和缩放值都会影响属性的值
contentsTransform。我已经在材质编辑器视图中修改了纹理。如果 offsetSet 为 (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)。通过搜索文档,我找到了如何获取此属性。Run Code Online (Sandbox Code Playgroud)var matrixA = SCNMatrix4MakeTranslation(0, -4.0, 0) var matrixB = SCNMatrix4MakeScale(1, 1.345, 1) var b = SCNMatrix4Mult(matrixB, matrixA)确保它是 MakeScale * MakeTranslation
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |