HTforWeb

基于HTML5的WebGL设计汉诺塔3D游戏

你说的曾经没有我的故事 提交于 2019-11-29 17:12:26
在这里我们将构造一个基于HT for Web的HTML5+JavaScript来实现汉诺塔游戏。 http://hightopo.com/demo/hanoi_20151106/index.html 汉诺塔的游戏规则及递归算法分析请参考 http://en.wikipedia.org/wiki/Tower_of_Hanoi 。 知道了汉诺塔的规则和算法,现在就开始创建元素。用HT for Web( http://www.hightopo.com )现有的3D模板创建底盘和3根柱子不是问题,问题是要创建若干个中空的圆盘。一开始的想法是:创建一个圆柱体,将圆柱体的上下两端隐藏,设置柱面的宽度来实现圆盘的效果,经过多次尝试并查阅相关api文档,发现柱面是没有厚度的,改方法不可行。 后来在HT for Web自定义3D模型的WebGL应用( http://www.hightopo.com/blog/381.html )受到启发,圆盘的形成就是在xy平面上的一个矩形,根据y轴旋转一周产生的,通过查阅相关文档,最总决定采用ht.Default.createRingModel方法来创建圆盘模型,然后在创建node的时候通过shape3d属性引用创建好的模型。 在逻辑实现上,采用了栈的先进后出的原理,对圆柱上的圆盘做顺序控制,确保每次移动的圆盘都是最小的圆盘。 在算法上,采用的是递归算法

HT for Web 3D游戏设计设计--汉诺塔(Towers of Hanoi)

蹲街弑〆低调 提交于 2019-11-29 17:11:54
在这里我们将构造一个基于HT for Web的HTML5+JavaScript来实现汉诺塔游戏。 汉诺塔的游戏规则及递归算法分析请参考 http://en.wikipedia.org/wiki/Tower_of_Hanoi 。 知道了汉诺塔的规则和算法,现在就开始创建元素。用HT for Web( http://www.hightopo.com )现有的3D模板创建底盘和3根柱子不是问题,问题是要创建若干个中空的圆盘。一开始的想法是:创建一个圆柱体,将圆柱体的上下两端隐藏,设置柱面的宽度来实现圆盘的效果,经过多次尝试并查阅相关api文档,发现柱面是没有厚度的,改方法不可行。 后来在HT for Web自定义3D模型的WebGL应用( http://www.hightopo.com/blog/381.html )受到启发,圆盘的形成就是在xy平面上的一个矩形,根据y轴旋转一周产生的,通过查阅相关文档,最总决定采用ht.Default.createRingModel方法来创建圆盘模型,然后在创建node的时候通过shape3d属性引用创建好的模型。 在逻辑实现上,采用了栈的先进后出的原理,对圆柱上的圆盘做顺序控制,确保每次移动的圆盘都是最小的圆盘。 在算法上,采用的是递归算法,通过递归算法,将搬迁过程一步一步记录下来,再采用堆的原理一步一步地执行搬迁过工作。 http://v

HT for Web自定义3D模型的WebGL应用

泄露秘密 提交于 2019-11-27 11:54:00
有不少朋友询问《 HTML5 Web 客户端五种离线存储方式汇总 》文章例子的3D表计模型是如何生成的,这个例子是通过导入3dmax设计好的表计模型,然后通过obj格式导入到 HT for Web 系统中进行控制,这种方式特别适合复杂模型的应用场景,但对于监控系统的很多应用其实并不需要专业的美工使用专业的3D编辑工具,完全通过 HT for Web 预定义的和内置自定义3D模型API就能满足很多应用,这里介绍几种场景的自定义3D模型应用。 上图是采用 HT 提供的 createRingModel 函数,通过编辑2D的多边形生成对应的环状的3D模型,对于花瓶碗杯等环形对称的物体很适合采用该函数构建。除了 createRingModel 外,HT的建模手册中的custommodel自定义模型例子,还采用了createExtrusionModel等更多的自定义模型API构建了一个餐桌椅和墙面的场景,其效果如下: HT 内置的基础模型也有很多参数可调节设置出多种模型效果,参见 HT 建模手册的如下例子: 自定义模型还可用于构建如机房、机框、板卡和端口的常见电信网管监控模型: http://v.youku.com/v_show/id_XODY2ODc0ODY0.html 该EMS设备管理系统例子3D模型和Tree组件通过HT强大灵活的模型与图形的数据绑定功能