如何仅在一侧(正面)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