思路大概是这样: 矩阵变换,投影,消隐,渲染(只是由光线与平面的夹角来确定平面的亮度).最后分别通过FLASH,CANVAS(FF),VML(IE)显示出来.
矩阵变换和投影的算法已经算是不错了,消隐和渲染暂时还没找到很简便的算法,毕竟在数学上,很难描述"被挡住"这一概念.
我这里做了个立方体,"投机取巧"的实现了消隐和渲染.
我在几种浏览器上试了一下效果:
Firefox, flash很卡,canvas还行;
Google chrome,flash有点卡(没FF严重),canvas还好;
Safari, flash和canvas都不卡(apple的东西就是牛一些啊);
IE6, VML可以显示,不过有点问题(VML不是W3C标准,好像要被微软抛弃了),flash没显示,可能是由于没有定义与flash最新的通信方式(我用的是ExternalInterface.addCallback);
IE7, 都有显示,flash也不卡,还是VML有点问题;
IE8, flash正常,VML没了(,难道IE要跟标准接轨了!硬要显示也行,把DOCTYPE声明去掉即可,不过页面会很难看);
附上源代码,直接打开HTML可能会弹出Flash安全警告,这是由于FLASH向JS注册了回调函数,用于flash与JS通信,通过webserver访问无此问题
对消隐和渲染有好点子的朋友,欢迎交流...
矩阵变换和投影的算法已经算是不错了,消隐和渲染暂时还没找到很简便的算法,毕竟在数学上,很难描述"被挡住"这一概念.
我这里做了个立方体,"投机取巧"的实现了消隐和渲染.
我在几种浏览器上试了一下效果:
Firefox, flash很卡,canvas还行;
Google chrome,flash有点卡(没FF严重),canvas还好;
Safari, flash和canvas都不卡(apple的东西就是牛一些啊);
IE6, VML可以显示,不过有点问题(VML不是W3C标准,好像要被微软抛弃了),flash没显示,可能是由于没有定义与flash最新的通信方式(我用的是ExternalInterface.addCallback);
IE7, 都有显示,flash也不卡,还是VML有点问题;
IE8, flash正常,VML没了(,难道IE要跟标准接轨了!硬要显示也行,把DOCTYPE声明去掉即可,不过页面会很难看);
附上源代码,直接打开HTML可能会弹出Flash安全警告,这是由于FLASH向JS注册了回调函数,用于flash与JS通信,通过webserver访问无此问题
对消隐和渲染有好点子的朋友,欢迎交流...