博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现法线贴图3D模型渲染的脚本代码(附源码)
阅读量:6444 次
发布时间:2019-06-23

本文共 2960 字,大约阅读时间需要 9 分钟。

这几天研究了下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:"NormalMap";                Texture: "weaponImg";                normalMap:"weapon_nImg";            };        };//子模型0设置         {            index:1;            shader:            {                type:"NormalMap";                Texture: "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:"NormalMap";                Texture: "weaponImg";                normalMap:"weapon_nImg";                Ambient:{
0.5,0.5,0.5}; Diffuse: {
0.7,0.7,0.7}; Specular: {
0.2,0.2,0.2}; }; };//子模型0(武器)设置 { index:1; shader: { type:"NormalMap"; Texture: "bodyImg"; normalMap:"body_nImg"; Ambient:{
0.5,0.5,0.5}; Diffuse: {
0.7,0.7,0.7}; Specular: {
0.2,0.2,0.2}; }; };//子模型1(身体)设置 };});

 

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

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

 

源代码下载

http://files.cnblogs.com/files/gamemaker/%E6%B3%95%E7%BA%BF%E8%B4%B4%E5%9B%BE%E6%BA%90%E4%BB%A3%E7%A0%81.zip

转载于:https://www.cnblogs.com/gamemaker/p/4299550.html

你可能感兴趣的文章
Alpha冲刺(9/10)
查看>>
字符数组什么时候要加‘\0’
查看>>
try 和 catch 的用法
查看>>
【Python编程-从入门到实践】Python与PHP去空格函数不一样
查看>>
常用的用友表名
查看>>
ASP.Net MVC的开发模式
查看>>
困惑的托管与非托管混合调试时遇到的不能设断点的问题
查看>>
T-SQL问题解决集锦——数据加解密
查看>>
groupbox 下的datagridview的列标题字体修改混乱
查看>>
HDU-3092 Least common multiple---数论+分组背包
查看>>
CentOS 7使用systemctl如何补全服务名称
查看>>
软件架构笔记 一
查看>>
hdu1421 搬寝室
查看>>
[转载]Linux命令笔记
查看>>
Unity3D NGUI 给button按钮添加单间事件
查看>>
C# 使用各种API
查看>>
echo命令的简单用法和实例
查看>>
CentOS7.4 KVM虚拟化之环境准备(1)
查看>>
《程序员代码面试指南》第八章 数组和矩阵问题 子矩阵的最大累加和问题
查看>>
密码的校验.大小写字母,数字,特殊字符中的至少3种
查看>>