u3d法线贴上没显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了u3d法线贴上没显示相关的知识,希望对你有一定的参考价值。
参考技术A u3d法线贴上没显示可能是流程贴错了Unity-Shader之法线贴图使用注意事项 法线纹理在游戏生产过程中使用的频率非常高,在游戏中,尤其是手游中,模型面数过高是非常吃性能的。
SceneKit - 将图像添加为法线贴图
【中文标题】SceneKit - 将图像添加为法线贴图【英文标题】:SceneKit - Adding an image as Normal Map 【发布时间】:2019-03-15 06:05:42 【问题描述】:到目前为止,我能够下载 Collada 文件 (dae) 并将其显示在屏幕上。 现在我正在尝试以编程方式将图像放置在 Normal 属性中,因此正面纹理将获得不同的效果。
根据文件检查器,Normal 选项位于 材料 -> 正常。
我尝试通过材质更改“法线贴图”的内容,但没有成功。 这是我的代码不起作用。
/// Creating the Node
let node = SCNNode()
/// The dae file
let scene = SCNScene(named: "bluebag.dae")
let arryNode = scene?.rootNode.childNodes
/// Override the assets
for childNode in arryNode!
if let geo = childNode.geometry
for geoItem in geo.materials
geoItem.normal.contents = UIImage(named:"fabric.jpg") /// This is not working
node.addChildNode(childNode)
我也尝试在其内部创建一个包含材质和法线贴图图像的新节点并将其添加到前面的纹理中,但我还是没有成功。 谁能指点我如何将法线贴图添加到纹理?我错过了什么吗?
【问题讨论】:
【参考方案1】:查看您的代码:
/// Creating the Node
let node = SCNNode()
/// The dae file
let scene = SCNScene(named: "bluebag.dae")
let arryNode = scene?.rootNode.childNodes // See Note 1
/// Override the assets
for childNode in arryNode!
if let geo = childNode.geometry
for geoItem in geo.materials
geoItem.normal.contents = UIImage(named:"fabric.jpg") // See Note 2
node.addChildNode(childNode)
注意1:你确定你所有的子节点都在rootNode的第一层吗?
注意 2:如果 Assets.xcassets 中有 fabric.jpg,则使用 UIImage(named:"fabric")
试试这个遍历节点层次结构:
scene.rootNode.enumerateChildNodes (node, stop) in
if let geo = node.geometry
for material in geo.materials
material.normal.contents = UIImage(named: "fabric")
scnView.scene?.rootNode.addChildNode(node) // or something like this
【讨论】:
以上是关于u3d法线贴上没显示的主要内容,如果未能解决你的问题,请参考以下文章