2009年7月16日 星期四

2009-7-16记号:三维相关


基于Direct3D 10和NVIDIA PhysX渲染的游戏:Underwater Wars



伊朗三维艺术家作品


PDF: CUDA C Programming Best Practices Guide

framework: CuPP is our newly developed C++ framework designed to ease integration of NVIDIAs GPGPU system CUDA into existing C++ applications.

PDF: Introduction to CausticRT




标签: ,

2009年5月29日 星期五

Unity3D确实很酷




Unity3D是个真正的跨平台专业三维开发框架,支持各种三维游戏开发和网页三维插件,之前听说它也有一段时间了,本来想安装网页插件看看效果,但是并没有真心想去了解它,所以也就没有行动。昨天看了Unity3D is awesome!,想想4M的插件确实也不大,能够让everydayflash也惊叹的确实应该不简单。兴趣一下猛增,赶紧装来看看,结果确实让人叹为观止。


近乎真实完美的三维场景,我足足在那个天堂(Tropical Paradise)里面溜达了半个小时,相对Flash所能做出来的网页三维效果,Unity3D已经是非常成熟和先进。感叹之余希望可以从Unity3D里面学点一招半式,让我的三维世界更加丰富多彩。^_^

标签:

2009年5月8日 星期五

基于FLASH的免费三维字体生成工具

3dtext.in是一款基于FLASH的免费三维字体生成工具,你可以轻松生成三维的字体标题,有多种字体材质,背景和动画特效的选择。

另外,利用它提供的API可以在自己的AS3里面调用,生成自己的三维字体特效。Wonderfl ( wonderfl是一个提供在线实时测试Flash代码的网站,支持PV3D,Alternativa3D,Sandy3D等AS3三维框架,有大量AS3源码供大家学习和交流 )有个很好的基于PV3D的例子: 3Dメガネを使った立体視 3dtext.in API,具体调用方法源代码里面都有。

标签: , ,

2009年3月19日 星期四

Away3D测试


测试Away3D用了2.3.3flash9版本中的样例来测试。很喜欢这个水下的光影效果。Away3D的学习资料没有PV3D多,但是和Alternative3D比较还是好很多,可以看看Away3D核心开发人员:Fabrice Closier的博客,能学到很多东西

另外有个地方要注意的是:从Blender导出dae文件到Away3D,必须添加UV Mapping,否则Collada.load装载材质的时候会出现这样的错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.

注意dae中的路径问题。

标签: , , ,

2009年3月18日 星期三

测试Alternativa3D

去年下载过alternativa3d_5.0.3来测试,但是Alternativa3D只提供组件看不到源代码,所以暂时放弃。最近Alternativa3D多了一些教程,上手也比较容易,于是又重新开始玩玩。

可惜的是Alternativa3D被墙,无法访问,而Alternativa3D又需要注册登录才能免费下载最新版本,所以只有拿5.0.3的来做测试(最新5.5.0)。

和Papervision3D比较起来,Alternativa3D似乎不存在z-fighting的问题,建模效果不错,但是由于Alternativa3D_5.0.3的API Documentation里面没有Light的部分,无法做光线渲染部分的测试。希望可以尽快下载最新版本试试。另外也希望有空找时间玩玩away3d,似乎光线渲染做的不错。随着CS4的推出,各大3D引擎也纷纷推出自己的Flash10版本,我还没有装CS4,也对等flash10最新内嵌对3D的支持用法不甚了解,但是可以肯定的是3D性能得到了很大提高,就拿pv3d开发人员的话说:“高速三维实时渲染的数量级从400提高到了8000”。得赶紧跟上啊~~

标签: , ,

2009年3月5日 星期四

Blender导出Dae文件到Papervision3D的方法

这里有三个把Blender里面材质映射(UV Mapping)好的三维物件导入Flash(通过Papervision3D渲染)的方法。
方法一:ActionScript 3.0 exporter from rozengain.com (除了pv3d,还支持Sandy3D和Away3D)
步骤:
1. 下载到Windows下的这个目录: (Blender .2.48: C:\Documents and Settings\\Application Data\Blender Foundation\Blender\.blender\scripts)
2. Blender里面选中要导出的物件,确定是在编辑模式下,Ctrl+T让物件三角形化(triangulated)。
3. 菜单File -> Export -> ActionScript 3.0 Class
4. 装入pv3d: var BlenderBox:TriangleMesh3D=new BlenderBoxClass(material...);

方法二:XMLExporter/XMLPrimitive from professionalpapervision.wordpress.com (应该是方法一的改良版)
步骤:
1. 下载让后复制Python XMLExporter到和方法一一样的目录
2. 和方法一一样的,把XML导出。利用XMLPrimitive这个Class装载。zhaiduoText = new XMLPrimitive("BlenderBox.xml",Material...);

方法三:Blender .2.48里面内置的Collada 1.4导出工具:
步骤:
1. 菜单: File -> Export -> Collada 1.4 (.dae)
2. 利用org.papervision3d.objects.parsers.dae导入

标签: , , ,

2009年2月21日 星期六

我是FLash三维实时渲染的忠实粉丝

最近,Away3DAlternativa3D这两个我最关注的基于Flash的三维实时渲染框架都有着令人鼓舞的新作品出现。虽然在AS3代码的测试上,我更关注Papervision3D。但是从现在的三维实时渲染效果来看,Away3D和Alternativa3D无疑走在了前面。


Alternativa3D的武士效果:


Away3D的房间光影效果:

标签: ,

2009年2月3日 星期二

Cube使用ShadedMaterial材质的黑三角型问题


在PV3d里面立方体原型Cube中使用ShadedMaterial材质的时候,如果立方体所有面都使用同一shader,渲染结果的时候,每个面会出现单个黑色三角形的问题。
myShader = new PhongShader(light);
myShadedMaterial = new ShadedMaterial(myBitmapMaterial,myShader);
mlist = new MaterialsList();
mlist.addMaterial(myShadedMaterial, "all");

根据nabble上的解释:解决办法只能给每个面指定单独的Shader。经测试问题解决。

另外,要解决两平面相对垂直时,视角中出现的三角形突起,如下图:

可以修改小平面useOwnContainer属性来解决。
plane.useOwnContainer=true;

但是发现如果有多个平行平面垂直于一平面的时候,useOwnContainer会导致平行平面之间视角失真的问题,看来还得找其他办法。如图,注意深蓝色平面。


正常情况


失真情况

更新:是Z-fighting的问题,用ViewportLayer和QuadrantRenderEngine来解决。具体如下
import org.papervision3d.render.QuadrantRenderEngine;
import org.papervision3d.view.layer.util.ViewportLayerSortMode;
...
viewport.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT;
renderer = new QuadrantRenderEngine(QuadrantRenderEngine.ALL_FILTERS);
...
viewport.getChildLayer(target).layerIndex = 1;
viewport.getChildLayer(floor).layerIndex = -100;

标签: , , ,

2009年1月8日 星期四

Papervision3D的正反两面材质测试


要做到Papervision3D的Plane实现正反两面材质,现在主要有两个方法:
一是利用DisplayObject3D两个Plane放到一起,贴图做到一正一反就可以实现:[wave2.swf]
p = new Plane(bitmapMaterial,829, 389,10,10);
planeGroup.addChild(p);
p2 = new Plane(bitmapMaterial2,829, 389,10,10);
p2.rotationY = 180;
planeGroup.addChild(p2);
scene.addChild(planeGroup);

波动效果利用Plane的segments分段特性,控制每个geometry.vertices来实现。

二是利用Cube,把高度设为零,上下两面做贴图:[As3dModPerlin.swf]
var materialsList:MaterialsList = new MaterialsList() ;
materialsList.addMaterial(bitmapMaterial, "top" ) ;
materialsList.addMaterial(bitmapMaterial2, "bottom" ) ;
var cube:Cube = new Cube(materialsList, 829, 389 , 1,10,10,10 ) ;
planeGroup.addChild(cube) ;
scene.addChild(planeGroup);

波动效果采用everydayflashAS3Dmod库来实现。

标签: ,

Powered by Blogger

订阅
帖子 [Atom]