首页 > 解决方案 > 如何使用 SCNShaderModifierEntryPointGeometry?

问题描述

我正在尝试学习如何为 SCNShaderModifierEntryPointGeometry 设置动画以跨 SCNPlane 移动纹理。

为了尝试理解它,我在上一个问题上找到了一些示例代码:

在 SceneKit 中使用着色器修改器对纹理进行动画处理会导致纹理随着时间的推移而抖动

这是插入到代码中的示例:

    super.init()
    self.geometry = SCNPlane(width: 1, height: 1)

    self.geometry?.firstMaterial?.diffuse.contents = UIImage(named:"art.scnassets/cloud.png")

    let mTrans =  SCNMatrix4MakeTranslation(0, 0, 0)
    let mScale = SCNMatrix4MakeScale(1, 1, 1)
    self.geometry?.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Mult(mTrans, mScale)

    self.geometry?.firstMaterial?.diffuse.wrapS = SCNWrapMode.repeat
    self.geometry?.firstMaterial?.diffuse.wrapT = SCNWrapMode.repeat

    self.geometry?.firstMaterial?.shaderModifiers = @{ SCNShaderModifierEntryPointGeometry : @"_geometry.texcoords[0] = vec2((_geometry.texcoords[0].x+floor(u_time*30.0))/10.0, (_geometry.texcoords[0].y+floor(u_time*30.0/10.0))/7.0);" };

预期的结果是在平面上动画的云纹理

云

错误消息说:

将“SCNShaderModifierEntryPointGeometry”替换为“SCNShaderModifierEntryPoint.geometry”

但我检查了苹果文档,它存在: https ://developer.apple.com/documentation/scenekit/scnshadermodifierentrypointgeometry?language=objc

谢谢阅读。

标签: swiftxcodeshaderscenekit

解决方案


推荐阅读