首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >统一5中的运行时法线地图导入

统一5中的运行时法线地图导入
EN

Stack Overflow用户
提问于 2015-07-27 19:13:30
回答 1查看 3.5K关注 0票数 6

对于我的项目,我需要在运行时创建材料。当我创建材料时,普通地图没有任何效果。我试过这两种解决方案,但它们对我不起作用。“统一5”中的这件事有什么改变吗?

我检查过的链接:

http://answers.unity3d.com/questions/801670/runtime-loading-normal-texture.html http://answers.unity3d.com/questions/47121/runtime-normal-map-import.html

P.S:奇怪的是,当我切换到内部统一的“场景视图”时,如果我从“检查器”普通地图中展开“物质”选项卡,就会将它应用到对象上。

我的代码:

代码语言:javascript
复制
            ....
Material mat = new Material(Shader.Find("Standard (Specular setup)"));
mat.SetTexture("_MainTex", colortex);

normaltex = getNormalTexture(Texture2D source);
mat.SetTexture("_BumpMap", normaltex);
mat.SetFloat("_Glossiness", 0.1f);
mat.SetFloat("_BumpScale", 1.0f);

            ....             

public static Texture2D getNormalTexture(Texture2D source)
{
    Texture2D normalTexture = new Texture2D(source.width, source.height, TextureFormat.ARGB32, true);
    Color theColour = new Color();
    for (int x = 0; x < source.width; x++)
    {
        for (int y = 0; y < source.height; y++)
        {
            theColour.r = 0;
            theColour.g = source.GetPixel(x, y).g;
            theColour.b = 0;
            theColour.a = source.GetPixel(x, y).r;
            normalTexture.SetPixel(x, y, theColour);
        }
    }
    normalTexture.Apply();
    return normalTexture;
 }
EN

回答 1

Stack Overflow用户

发布于 2015-10-17 10:53:00

至少有了Unity4.x,您必须修改着色器才能正确显示运行时正常映射。只需要从代码中删除UnpackNormal()。

技术细节:http://forum.unity3d.com/threads/creating-runtime-normal-maps-using-rendertotexture.135841/#post-924587

内置着色器源可从:http://unity3d.com/get-unity/download/archive下载

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31661389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档