如何仅在一侧(正面)SCNText 上更改文本的颜色?
How to change the color of text just on one (front) side SCNText?
我正在使用 SCNScene 工作,我在其中放置了 SCNText 节点,因此,我在场景中得到了 3d 文本,问题是如果我更改文本的深度,它看起来就像一块纯色, 所以很难看清楚屏幕上到底是什么,有几个例子
我需要以某种方式想出如何使文本易于理解,即使它具有很大的深度值
我想到了这样的边缘(我不是一个好的艺术家:)
希望你明白了
或者让文字的正面颜色变浅或者颜色不同,像这样,这样用户写的内容会更明显
有没有办法做这样的事情?
来自 documentation:
A text geometry may contain one, three, or five geometry elements:
If its extrusion depth is greater than zero and its chamferRadius
property is 0.0
, the text geometry has three elements, corresponding
to its front, back, and extruded sides.
SceneKit can render each element using a different material. For
details, see the description of the materials
property in SCNGeometry
.
所以你可以设置一个material数组,一个SCNMaterial
实例用于正面,另一个material用于背面和侧面。
在 SceneKit 中对 3D 文本的正面和侧面部分进行不同“着色”的最简单方法是在公共父容器下使用两个文本节点。 Container 允许您同时移动和旋转两个文本子节点。
let sceneView = self.view as! SCNView
sceneView.scene = SCNScene()
sceneView.allowsCameraControl = true
sceneView.backgroundColor = .black
// Nodes
let container = SCNNode()
let frontText = SCNNode()
let backText = SCNNode()
container.addChildNode(frontText)
container.addChildNode(backText)
sceneView.scene?.rootNode.addChildNode(container)
// Red stuff
backText.geometry = SCNText(string: "Hi", extrusionDepth: 10.0)
backText.geometry?.firstMaterial?.diffuse.contents = NSColor.red
// White stuff
frontText.geometry = SCNText(string: "Hi", extrusionDepth: 0.005)
frontText.geometry?.firstMaterial?.diffuse.contents = NSColor.white
frontText.position.z = (10.0 / 2) + 0.005
我正在使用 SCNScene 工作,我在其中放置了 SCNText 节点,因此,我在场景中得到了 3d 文本,问题是如果我更改文本的深度,它看起来就像一块纯色, 所以很难看清楚屏幕上到底是什么,有几个例子
我需要以某种方式想出如何使文本易于理解,即使它具有很大的深度值
我想到了这样的边缘(我不是一个好的艺术家:)
希望你明白了
或者让文字的正面颜色变浅或者颜色不同,像这样,这样用户写的内容会更明显
有没有办法做这样的事情?
来自 documentation:
A text geometry may contain one, three, or five geometry elements:
If its extrusion depth is greater than zero and its
chamferRadius
property is0.0
, the text geometry has three elements, corresponding to its front, back, and extruded sides.SceneKit can render each element using a different material. For details, see the description of the
materials
property inSCNGeometry
.
所以你可以设置一个material数组,一个SCNMaterial
实例用于正面,另一个material用于背面和侧面。
在 SceneKit 中对 3D 文本的正面和侧面部分进行不同“着色”的最简单方法是在公共父容器下使用两个文本节点。 Container 允许您同时移动和旋转两个文本子节点。
let sceneView = self.view as! SCNView
sceneView.scene = SCNScene()
sceneView.allowsCameraControl = true
sceneView.backgroundColor = .black
// Nodes
let container = SCNNode()
let frontText = SCNNode()
let backText = SCNNode()
container.addChildNode(frontText)
container.addChildNode(backText)
sceneView.scene?.rootNode.addChildNode(container)
// Red stuff
backText.geometry = SCNText(string: "Hi", extrusionDepth: 10.0)
backText.geometry?.firstMaterial?.diffuse.contents = NSColor.red
// White stuff
frontText.geometry = SCNText(string: "Hi", extrusionDepth: 0.005)
frontText.geometry?.firstMaterial?.diffuse.contents = NSColor.white
frontText.position.z = (10.0 / 2) + 0.005