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法线贴上没显示的主要内容,如果未能解决你的问题,请参考以下文章

3DMAX 处理反面

ue4导入模型后法线贴图不正常,如图片显示?

我可以使用顶点着色器来显示模型法线吗?

u3d随机精灵显示

qt设置了背景图片在windows下显示正常但是在板上没显示

u3d 异步加载场景以及进度条的显示