我正在尝试将SCNGeometryTessellator添加到一些使用自定义SCNProgram的SceneKit几何体中。我的几何图形渲染正常,但我一添加SCNGeometryTessellator,就会看到以下错误: [SceneKit] Error: Compiler error while building render pipeline state for node <C3DNode:0x1053e9700 "(null)"
geometry: <C3DParametricGeometry<Plane>:0x1053e9160 "
我使用以下代码创建了一个自定义SCNGeometry:
let data = NSData(bytes: position, length: MemoryLayout<float3>.size * self.objectMesh.pointCount)
let vertexSource = SCNGeometrySource(data: data as Data,
semantic:
我有一个图像数组,我必须根据顶点随机挑选一个图像,用金属我可以实现这个MTLTexture2DArray。
但我使用的是SceneKit和自定义SCNProgram,问题是我无法将MTLTexture传递给金属片段函数。
如果我设置图像为SCNMaterial,它可以工作,如果我设置一个金属纹理,它会抛出异常。
let material = SCNMaterial()
material.program = program
material.setValue(metalTexture, forKey: "customTexture")
这个问题和这个问题中的完全一样。
但它使用着
问题
如何定义上的材料,使其呈现与“典型”SCNNodes相同的内容?
详细信息
在这个场景里
定向灯
基于照明模型的红色球体
基于物理模型的蓝色球体
使用顶点数据的自定义SCNGeometry,使用基于物理的照明模型
红蓝两色的球体和我所期望的一样。自定义几何中的两个点/球是黑色的。
为什么?
下面是playgrond代码:
设置场景
import UIKit
import SceneKit
import PlaygroundSupport
// create a scene view with an empty scene
var sceneView = S
我有一个对象在初始化过程中创建了一个几何图形。
class Helix {
var width: GLfloat // x
var height: GLfloat // y
var depth: GLfloat // z
var radius: GLfloat
var pitchInherent: GLfloat
var pitchCurrent: GLfloat
/* Other SceneKit related properties used later */
init(width: Float,
我很难理解如何将.dae文件中的几何图形加载到iOS SceneKit场景图中。
我知道您可以直接将.dae文件加载到SCNScene中:
// create a new scene
let scene = SCNScene("test.scnassets/test.dae")
我还知道,您可以创建一个空的SCNScene,并将内置的3D对象作为子节点添加到其中:
let scene = SCNScene()
var sphereNode = SCNNode()
sphereNode.geometry = SCNSphere(radius: 1.0)
scene.rootNod
我无法显示我的自定义几何图形。当我调试它时,所有的变量似乎都保存了正确的数据,但没有呈现任何内容。我现在将其设置为尝试渲染由两个三角形组成的单个正方形,以进行非常简单的测试,但仍然没有成功。我觉得我构建的SCNGeometry是错误的。在完成了所有的逻辑/循环/魔术之后,我得到了以下内容:
var verts = SCNGeometrySource(vertices: meshVertices)
var norms = SCNGeometrySource(normals: normals)
var element = SCNGeometryElement(indices: triangleIn