- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在试验 Google-VR iOS SDK。我有一个非常简单的 SceneKit 场景,其中包含一个纹理对象。这是使用 SCNRenderer 在 GVRCardboardViewDelegate drawEye 方法中呈现的。当 GVRCardboardView 上的 vrModeEnabled 设置为 false 时,对象会正确渲染,但当设置为 true 时,纹理不会正确应用。请参见下图。
经过更多调查后,我发现从 SceneKit .scn 文件加载包含纹理对象的场景效果很好。使用 ModelIO 将 OBJ 文件(以及它的 .mtl 文件和 jpg 纹理)加载到 SCNNode 时会出现问题,如下所示:
let stageURL = NSBundle.mainBundle().URLForResource("newStage", withExtension: "obj", subdirectory: "Art.scnassets")
let stageAsset = MDLAsset(URL: stageURL)
let stageObject = asset.objectAtIndex(0)
let stage = SCNNode(MDLObject: stageObject)
scene.addChildNode(stage)
这似乎是一个 OpenGL 状态问题(也可能是 ModelIO 中的一个错误),但我还没有找到解决方案或解决方法。有什么建议吗?
Example of texture appearance. Top vrModeEnabled = false, bottom vrModeEnabled = true
最佳答案
更新:实际的解决方案很简单。由于某些未知原因,纹理变换被搞乱了。将以下行添加到问题中的代码中,使纹理按预期显示。
var transformForTexture = SCNMatrix4MakeScale(1, -1, 1);
transformForTexture = SCNMatrix4Translate(transformForTexture, 0, 1, 0)
stage.geometry?.firstMaterial?.diffuse.contentsTransform = transformForTexture
原始解决方法:
使用 ModelIO 加载 OBJ 文件将隐式使用关联的 Material 描述文件(其文件名与 OBJ 文件相同,但扩展名为 .mtl)为几何体提供纹理和 Material 属性。删除 Material 文件并加载纹理明确解决了这个问题。
let stageURL = NSBundle.mainBundle().URLForResource("newStage", withExtension: "obj", subdirectory: "Art.scnassets")
let stageAsset = MDLAsset(URL: stageURL)
let stageObject = asset.objectAtIndex(0)
let stage = SCNNode(MDLObject: stageObject)
let texture = SCNMaterial()
texture.diffuse.contents = UIImage(named: "Art.scnassets/stage.jpg")
stage.geometry?.firstMaterial = texture
scene.addChildNode(stage)
这不是一个理想的解决方案,但在我有时间调试确切原因之前,这是一个足够的解决方法。
请注意,在得出此解决方案之前,我尝试更新节点漫反射 Material 的 SCNMaterialProperty 中的纹理属性,但这没有任何效果。
关于ios - 使用 GoogleVR 和 SceneKit 时纹理显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37605225/
我在 Unity 3D(版本 5.3.2)中使用 Google Cardboard 插件。我设置了一个 C# 脚本,它应该从脚本“GvrHead.cs”访问变量“target”。这是脚本的一部分(称为
我正在试验 Google-VR iOS SDK。我有一个非常简单的 SceneKit 场景,其中包含一个纹理对象。这是使用 SCNRenderer 在 GVRCardboardViewDelegate
有没有人知道或可能指出一些说明或 github 存储库,说明如何在我有一个对象的地方创建一个脚本,如果我注视一个对象,在 GoogleVr(Cardboard)中,会出现一个工具提示? 如果有人熟悉,
我使用 Unity 构建了一个 VR 游戏,其中包括用于支持 Cardboard 的 GoogleVR SDK。 在 Android 上,它就像一个魅力:VR 模式被激活,带有 Cardboard 失
我是一名大学生,尝试使用 Unity 与 GoogleVR sdk (Google Cardboard) 配合构建 iOS VR 应用程序。我可以让我的应用程序在 iPad 上运行,但屏幕上的显示是通
我是一名优秀的程序员,十分优秀!