首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >旋转照明环境content ARKit和SceneKit

旋转照明环境content ARKit和SceneKit
EN

Stack Overflow用户
提问于 2018-11-23 03:27:50
回答 2查看 724关注 0票数 0

我来自Unity world。在Unity中,我们可以很容易地旋转image based lighting的背景天框。我看到在Swift中,我们可以通过输入以下命令来应用skybox:

代码语言:javascript
运行
复制
// Create a new scene
let scene = SCNScene()
var IBLImage = UIImage()
scene.lightingEnvironment.contents = IBLImage

但我希望它能够旋转,这样它就可以与真实环境相匹配。到目前为止,在旋转照明环境内容方面还没有代码方面的幸运。

任何帮助都将受到高度的感谢。

EN

回答 2

Stack Overflow用户

发布于 2018-11-24 07:02:04

您应该使用contentsTransform实例属性-可以应用于material属性的可视内容的转换:

代码语言:javascript
运行
复制
var contentsTransform: SCNMatrix4 { get set }

代码语言:javascript
运行
复制
scene.lightingEnvironment.contentsTransform

SceneKit将此变换应用于材质附加到的几何体对象提供的纹理坐标,然后使用生成的坐标在材质曲面上映射材质特性的内容。

关于4x4矩阵的表示,请阅读here

另外,请阅读我关于切变和缩放 (rotation) here组合的答案。

票数 0
EN

Stack Overflow用户

发布于 2018-11-25 08:24:50

谢谢你的回答,基于你的解释,我创建了一个函数,如下所示

代码语言:javascript
运行
复制
func makeRotationAroundY(angle: Float) -> simd_float4x4 {
 let rows = [
        simd_float4( cos(angle), Float(0.0), -sin(angle), Float(0.0)),
        simd_float4( Float(0.0), Float(1.0), Float(0.0), Float(0.0)),
        simd_float4( sin(angle), Float(0.0), cos(angle), Float(0.0)),
        simd_float4( Float(0.0), Float(0.0), Float(0.0), Float(1.0))
    ]
 return float4x4(rows: rows)
 }

并调用

代码语言:javascript
运行
复制
scene.lightingEnvironment.contentsTransform = SCNMatrix4(makeRotationAroundY(angle: GLKMathDegreesToRadians(180)))

但是,例如,当我在sphere节点上看到内容时,似乎没有任何变化。我把任何角度都放在那里,似乎没有反映任何变化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53437082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档