如何在 SCNPlane Geometry 的每一侧绘制不同的图像
How to draw different images on each side of SCNPlane Geometry
我的最终目标是让 SCNNode 代表漂浮在 space 中的图像。这或多或少很容易用我下面的当前代码完成,但问题是图像的背面没有渲染,因此从背面看是透明的。我希望能够在背面显示不同的图像,以便从两面都能看到一些东西。 isDoubleSided
属性 在这里不起作用,因为它只是模仿前面的内容。有任何想法吗?我研究了从 Sources 和 Elements 创建我自己的几何图形的想法,但对于本应非常简单的东西来说它似乎非常复杂。
我当前的代码:
private func createNode() -> SCNNode{
let scaleFactor = image.size.width/0.2
let width = image.size.width/scaleFactor
let height = image.size.height/scaleFactor
let geometry = SCNPlane(width: width, height: height)
let material = SCNMaterial()
material.diffuse.contents = image
geometry.materials = [material]
return SCNNode(geometry: geometry)
}
谢谢!
既然想要不同的图片,就需要使用不同的material。 SceneKit 允许为每个几何元素指定 material。 SCNPlane
只有一个元素,这就是为什么 isDoubleSided
只是背面的镜像。您在这里有两个选择:
- 创建两个
SCNPlane
几何体,将它们背对背定向并为每个几何体分配不同的图像 geometry.firstMaterial.diffuse.contents
- 从
SCNGeometrySource
(平面的 4 个顶点)和两个 SCNGeometryElements
(每边一个:2 个三角形,6 个索引)创建自定义 SCNGeometry
,并分配两个 materials(不同的图像)到几何。
第一个选项更简单,但看起来更像是一种解决方法。
我的最终目标是让 SCNNode 代表漂浮在 space 中的图像。这或多或少很容易用我下面的当前代码完成,但问题是图像的背面没有渲染,因此从背面看是透明的。我希望能够在背面显示不同的图像,以便从两面都能看到一些东西。 isDoubleSided
属性 在这里不起作用,因为它只是模仿前面的内容。有任何想法吗?我研究了从 Sources 和 Elements 创建我自己的几何图形的想法,但对于本应非常简单的东西来说它似乎非常复杂。
我当前的代码:
private func createNode() -> SCNNode{
let scaleFactor = image.size.width/0.2
let width = image.size.width/scaleFactor
let height = image.size.height/scaleFactor
let geometry = SCNPlane(width: width, height: height)
let material = SCNMaterial()
material.diffuse.contents = image
geometry.materials = [material]
return SCNNode(geometry: geometry)
}
谢谢!
既然想要不同的图片,就需要使用不同的material。 SceneKit 允许为每个几何元素指定 material。 SCNPlane
只有一个元素,这就是为什么 isDoubleSided
只是背面的镜像。您在这里有两个选择:
- 创建两个
SCNPlane
几何体,将它们背对背定向并为每个几何体分配不同的图像geometry.firstMaterial.diffuse.contents
- 从
SCNGeometrySource
(平面的 4 个顶点)和两个SCNGeometryElements
(每边一个:2 个三角形,6 个索引)创建自定义SCNGeometry
,并分配两个 materials(不同的图像)到几何。
第一个选项更简单,但看起来更像是一种解决方法。