查看: 1811|回复: 0
打印 上一主题 下一主题

[WEBGL] GLGE系列教程–第2节:添加光照

[复制链接]

1602

主题

1

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
24658
精华
6

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-8-30 16:31:49 |只看该作者 |倒序浏览
第一步:需要创建一个canvas的渲染器canvas id=canvas width=900 height=500/canvas 第二步:创建一个GLGE的加载类,var doc = new GLGE.Document();此类可以加载场景,模型, 网格,对象和xml文件具体请查…
第一步:需要创建一个canvas的渲染器
XML/HTML Code复制内容到剪贴板

<canvas id=”canvas” width=”900&rime; height=”500&rime;></canvas>   

第二步:创建一个GLGE的加载类,var doc = new GLGE.Document();此类可以加载场景,模型,
网格,对象和xml文件具体请查阅api文档。
第三步:创建网页自动加载函数doc.onLoad=function(){}
以下步骤比较简单:
JavaScript Code复制内容到剪贴板

//获得渲染器   

var gameRenderer=new GLGE.Renderer(document.getElementById(‘canvas’));   

//创建一个新的场景   

gameScene=new GLGE.Scene();   

//获得场景元素   

gameScene=doc.getElement(“mainscene”);   

//渲染器设置场景   

gameRenderer.setScene(gameScene);   

//渲染   

function render(){   

gameRenderer.render();   

}   

//启动线程循环渲染   

setInterval(render,1);   

}   

//加载资源xml文件   

doc.load(“level.xml”);   

接下来我们需要设置的是level.xml文件中的内容:
打开xml文件首先设置一个网格的矩形空间,如下:
XML复制内容到剪贴板

<mesh id=”cube”>   

<positions>-4.999998,5.000002,0.000000,5.000000,5.000000,0.000000,5.000002,4.999998,3.000000,-
4.999998,5.000002,0.000000,5.000002,4.999998,3.000000,-5.000000,5.000000,3.000000,-5.000000,-4.999999,0.000000,-4.999998,5.000002,0.000000,-
5.000000,5.000000,3.000000,-5.000000,-4.999999,0.000000,-5.000000,5.000000,3.000000,-5.000002,-4.999998,3.000000,5.000000,-5.000000,0.000000,-
5.000000,-4.999999,0.000000,4.999997,-5.000003,3.000000,-5.000000,-4.999999,0.000000,-5.000002,-4.999998,3.000000,4.999997,-
5.000003,3.000000,5.000000,5.000000,0.000000,5.000000,-5.000000,0.000000,5.000002,4.999998,3.000000,5.000000,-5.000000,0.000000,4.999997,-
5.000003,3.000000,5.000002,4.999998,3.000000,5.000002,4.999998,3.000000,4.999997,-5.000003,3.000000,-5.000000,5.000000,3.000000,4.999997,-
5.000003,3.000000,-5.000002,-4.999998,3.000000,-5.000000,5.000000,3.000000,5.000000,5.000000,0.000000,-4.999998,5.000002,0.000000,-5.000000,-
4.999999,0.000000,5.000000,5.000000,0.000000,-5.000000,-4.999999,0.000000,5.000000,-5.000000,0.000000</positions>
<normals>-0.000000,-1.000000,-0.000001,-0.000000,-1.000000,-0.000001,-0.000000,-1.000000,-0.000001,-0.000000,-1.000000,-0.000001,-0.000000,-
1.000000,-0.000001,-0.000000,-1.000000,-0.000001,1.000000,-0.000000,0.000000,1.000000,-0.000000,0.000000,1.000000,-0.000000,0.000000,1.000000,-
0.000000,0.000000,1.000000,-0.000000,0.000000,1.000000,-
0.000000,0.000000,0.000000,1.000000,0.000001,0.000000,1.000000,0.000001,0.000000,1.000000,0.000001,0.000000,1.000000,-0.000000,0.000000,1.000000,-
0.000000,0.000000,1.000000,-0.000000,-1.000000,0.000000,0.000001,-1.000000,0.000000,0.000001,-1.000000,0.000000,0.000001,-1.000000,0.000001,-
0.000001,-1.000000,0.000001,-0.000001,-1.000000,0.000001,-0.000001,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-
1.000000,0.000000,-0.000000,-1.000000,0.000000,-0.000000,-1.000000,0.000000,-0.000000,-1.000000,-0.000000,0.000000,1.000000,-
0.000000,0.000000,1.000000,-0.000000,0.000000,1.000000,0.000000,-0.000000,1.000000,0.000000,-0.000000,1.000000,0.000000,-0.000000,1.000000</normals>
<uv1>0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,
1.000000,1.000000,0.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,1.000000,0.000000,1.000
000,1.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0
.000000,1.000000,0.000000,0.000000,1.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,1.000000,1.0000
00,0.000000,0.000000,1.000000,1.000000,0.000000,1.000000</uv1>
<faces>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35</faces>
</mesh>   

然后我们需要创建一个摄像机
XML/HTML Code复制内容到剪贴板

<camera id=”maincamera” loc_y=”20&rime; loc_x=”1&rime; loc_z=”8&rime; rot_order=”ROT_XZY” xtype=”C_ORTHO” rot_z=”0&rime; rot_x=”1.56&rime; rot_y=”3.141&rime; />   

接下来我们需要创建一个场景的配置,在这里我们需要在场景中设置相机,场景颜色,类型,并且给场景
设置一个网格的矩形空间mesh=”#cube”,object作用是可以渲染一个场景。
XML/HTML Code复制内容到剪贴板

<scene id=”mainscene” camera=”#maincamera” ambient_color=”#666&rime; fog_type=”FOG_NONE”>
<object id=”wallobject” mesh=”#cube” scale_x=”10&rime; scale_y=”10&Prime; scale_z=”10&Prime; />
</scene>   

现在你运行就可以看到一个简单的场景了,接下来我们给场景设置属性,是场景看起来像立体空间。

light的作用是给场景创建一个新light资源
XML/HTML Code复制内容到剪贴板

<light id=”mainlight” loc_x=”0&Prime; loc_y=”15&Prime; loc_z=”10&Prime; rot_x=”-1.3&Prime;  attenuation_constant=”0.5&Prime; type=”L_POINT” />     

<light id=”mainlight” loc_x=”20&Prime; loc_y=”25&Prime; loc_z=”5&Prime; rot_x=”1.3&Prime;  attenuation_constant=”0.5&Prime; type=”L_POINT” />   

效果如下:

光照源码下载地址:http://vdisk.weibo.com/s/z73w/1314630328  来源:WebGL广播站

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-23 01:01 , Processed in 0.064755 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部