IsometricGL – 我的isometric view graphics library
filed in Flash on Oct.06, 2008 (1,850次檢視)
於上年的時候,為了可以增強自己actionscript的功力,我決定自己學寫API。剛巧自己對3D graphics等東西很有興趣,於是就決定做一個2.5D 的 graphics library。
甚麼是Isometric View?
相信大家應該有玩過Simicty、Theme Hopsital這些經典遊戲吧? 它們的視點就是用了isometric view做的了。在以前CPU及display card都不夠的時候,唯有可以做的,就是利用2D扮3D了,因此Isometric View也叫2.5D。
Isometric view 的特點,如下:
- 任何距離的物件大小一樣
- 比較常用的isometric view是2:1的,即向右走兩格,向上就升一格,與水平線形成 26.565°(arctan 0.5) 的夾角
關於我的IsometricGL
IsometricGL 是一個render engine,主要做的是幫你在2.5D的世界上畫東西(類似papervision3D吧,它是3D,我的則是2.5D)。有了IsometricGL, 你只要寫幾行code,就可以創作你的2.5D世界,不懂複雜的數學也可以做到呢!!
先看看以下的demo再介紹吧,以下是用我的IsometricGL弄出來的迷你office:
* 請click地板,藍色的立方體會跟著走的呢
>> 下載Demo 及 IsometricGL source code
以下是IsometricGL的features:
- 現只支持AS2.0
- 支持的primitives包括: cube, cone, conical frustum, sphere, hemisphere, point, line, external image
- 可以調較primitive的fill color, line color, line width,所有顏色都支持alpha channel
- 可以把primitive group在一起,移動group時就等於移動所有物件
- 可以複製primtive及primtive group,加入新的primitive就更加快捷了
- primitives不同的面會因光暗有不同的顏色,從而增加立體感
- primitives的brightness, alpha等屬性可以改變
- 可以於primitives加上onRelease, onRollOver等等的handler,令到你的2.5D世界更interactive
- 提供path-finding engine,可以令物件繞過障礙物走
- 不支援物件碰撞等物理反應,要自己寫了
如果對我的IsometricGL有興趣,可以看看API doc。
>> 下載Demo 及 IsometricGL source code
更多關於Isometric View的文章,頗有趣的:
Wiki – Isometric Projection
kirupa.com – Isometry (與Flash programming 有關,極力推介!!!)


October 10th, 2008 on 10:24 pm
天啦…還寫了API..O岩哂我呢D咁懶既人寫3D….
October 11th, 2008 on 12:22 am
可以拿來玩玩的~只要你喜歡~
November 29th, 2008 on 1:00 am
最近也在研究2.5D,就找到你这里来了,看起来非常棒,有时间看能不能把你这个改成AS3.0
December 18th, 2008 on 12:19 am
有空可以試一下! 不過我現在沉醉在Papervision 2.0 中呢~
如果是2.5D engine,可以看看這個:
http://www.openspace-engine.com/
January 12th, 2009 on 11:27 am
openspace-engine这个我也在看,FFilmation这个也在看,尚在学习中
January 15th, 2009 on 12:18 am
FFilmation 倒未看過,讓我也看一下~
February 25th, 2009 on 11:18 pm
FFilmation我也在看.
October 22nd, 2009 on 12:52 am
請問外部的 Graphic 要怎樣匯入,在你的 Demo 中,我用:
tempPos.setValue(10.5,0.5,6.5);
world.createGraphic(tempPos,0.5,”internal”,”/images/character.jpg”,1,1,1);
除錯說 “類型不相符”….能解惑就太謝謝了!!
October 22nd, 2009 on 3:08 pm
解決了,要先宣告:
var tempPos1:Vector2D = new Vector2D();
October 25th, 2009 on 1:23 am
多謝你使用我的library,由於寫時經驗嘗淺,寫得不好,而且只有as2.0 版本…~
January 17th, 2011 on 8:52 pm
這真是太強大了!不過有可能改成3.0版本嗎?謝謝