码迷,mamicode.com
首页 > 其他好文 > 详细

实现法线贴图3D模型渲染的脚本代码

时间:2015-02-25 15:27:56      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

转载 http://blog.csdn.net/games_maker/article/details/43935835

这几天研究了下wooyoogame的技术,这个网站的3d显示实现貌似很简单的样子哦,我做了个简单的教程给大家

里面的脚本感觉也不难,有点想json的样子,靠配置就可以做出显示了

先到http://www.wooyoogame.com?sp=209 注册一个账户,然后点击游戏开发(装个插件)就可以写脚本了

 

1.导出模型(记得要调整下比率单位1为1米),不然模型会超大或超小

技术分享

2.将导出的obj模型和纹理图片上传到平台中

技术分享

3. 在ide里面读取模型和创建出模型

LoadModel("testMdl",":/tiantian/orge.obj","obj");
Create(
{
    type:"mesh";
    model:"testMdl";
});

显示效果如下

技术分享

4. 读取模型diff纹理文件

clear();

LoadModel("testMdl",":/tiantian/orge.obj","obj");
LoadImage("bodyImg",":/tiantian/body_dif.jpg");
LoadImage("weaponImg",":/tiantian/weapon_dif.jpg");
Create(
{
    type:"mesh";
    model:"testMdl";//模型信息
    Geometries:
    {
        {index:0,texture:"weaponImg"};//子模型0设置
        {index:1,texture:"BodyImg"};//子模型1设置
    };
});

技术分享

哈哈,现在基本效果出来了,后面就是调整更多的效果了

5. 读取法线贴图纹理并且加入更复杂的shader配置

clear();
LoadModel("testMdl",":/tiantian/orge.obj","obj");
SmoothModel("testMdl");
LoadImage("bodyImg",":/tiantian/body_dif.jpg");
LoadImage("body_nImg",":/tiantian/body_nor.jpg");
LoadImage("weaponImg",":/tiantian/weapon_dif.jpg");
LoadImage("weapon_nImg",":/tiantian/weapon_nor.jpg");
Create(
{
    type:"mesh";
    model:"testMdl";//模型信息
    Geometries:
    {
        {
            index:0;
            shader:
            {
                type:"NormalMapEx";
                Texture: "weaponImg";
                DiffuseMap: "weaponImg";
                normalMap:"weapon_nImg";
            };
        };//子模型0设置
         {
            index:1;
            shader:
            {
                type:"NormalMapEx";
                Texture: "bodyImg";
                DiffuseMap: "bodyImg";
                normalMap:"body_nImg";
            };
        };//子模型0设置
    };
});

技术分享

 

6.有法线的效果了,可以看到兽人的青筋暴起了,现在我们在加入一些细节设置,比如createMipmap来生成mipmap纹理和光的调整

clear();
LoadModel("testMdl",":/tiantian/orge.obj","obj");
SmoothModel("testMdl");
LoadImage("bodyImg",":/tiantian/body_dif.jpg");
CreateMipmap("bodyImg",16);
LoadImage("body_nImg",":/tiantian/body_nor.jpg");
CreateMipmap("body_nImg",16);
LoadImage("weaponImg",":/tiantian/weapon_dif.jpg");
CreateMipmap("weaponImg",16);
LoadImage("weapon_nImg",":/tiantian/weapon_nor.jpg");
CreateMipmap("weapon_nImg",16);
Create(
{
    type:"mesh";
    model:"testMdl";//模型信息
    Geometries:
    {
        {
            index:0;
            shader:
            {
                type:"NormalMapEx";
                Texture: "weaponImg";
                DiffuseMap: "weaponImg";
                normalMap:"weapon_nImg";
                Ambient:{0.5,0.5,0.5};
                Diffuse: {0.7,0.7,0.7};
                Specular: {0.3,0.3,0.3};
            };
        };//子模型0(武器)设置
         {
            index:1;
            shader:
            {
                type:"NormalMapEx";
                Texture: "bodyImg";
                DiffuseMap: "bodyImg";
                normalMap:"body_nImg";
                Ambient:{0.5,0.5,0.5};
                Diffuse: {0.7,0.7,0.7};
                Specular: {0.3,0.3,0.3};
            };
        };//子模型1(身体)设置
    };
});

技术分享

大工搞成了,保存脚本就可以生成一个连接,在线就可以看得到

http://www.feekood.com/?path=:/tiantian/ShowOrge.ais

实现法线贴图3D模型渲染的脚本代码

标签:

原文地址:http://www.cnblogs.com/gamemaker/p/4299550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!