主题:  [源]3D编辑器制作中~~~~~

DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#12003/12/3 17:29:00



UndeadCraft

职务:版主
等级:4
金币:10.0
发贴:1993
注册:2001/5/28 17:37:43
#22003/12/3 17:38:33
好东西,置顶。
大家有兴趣的一起来研究研究



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#32003/12/3 17:59:12
注意:在这里的源代码已经删除,目前跟新在本页最下方

注意,需要Flash2004才能打开。

主要文件:3D引擎测试.fla

模型在主场景的as层上,注意用的是 顶点表 vertexModelList + 线段表 lineModelList
4边形贴图表 rectList 目前没有使用。

编辑器的主要代码在场景上那个巨大~~~~的MC 的as层上

还有一部分在库里 3D引擎 文件夹中 S-视窗MC 的as层上。


系统的内核是Ox3DEngine包。



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#42003/12/3 18:52:55
使用方法:



图片如下:

一开始的时候是默认的箭头工具(V),它可以编辑图像

用箭头工具,贴近顶点的时候会出现大家熟悉的标志~


图片如下:


选中顶点之后,会出现一个x,y,z坐标系,这是当前视图的世界坐标系


图片如下:


你可以选中某个坐标平面,然后拖动点。



图片如下:


另外,在下方的属性面板里面可以修改这个点的精确坐标。



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#52003/12/3 19:01:43
你可以使用鼠标中键(按下)拖动镜头


图片如下:



Alt+鼠标中键 (按下)旋转镜头

图片如下:



如果不想用中键,手工具(M)也可以达到同样的效果

图片如下:



滚轮是缩放,你也可以使用每个视图上方的 滚动条。


图片如下:



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#62003/12/3 19:16:35
每个视图左上角可以选择标准视图
一般的视图一旦旋转,就变成了 "user" 自定义视图

其中perspective是透视图,目前没有完成,不过效果不错~ >v<

图片如下:



层叠浮动窗口。上方的“窗口”部分可以选择新建窗口等等。

图片如下:


这里可以选择点、线等等的 编辑状态。依次是:可见/可选/自动吸附
目前只有点可选,其他正在完成中~~~~~~~

图片如下:


OK就这些拉~Undo功能实现了一半,目前还不正常~Pencil工具还没有做好~



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#72003/12/3 19:34:33
目前模型的生成、保存、导入、导出都没有完成。
那么,这个源代码对大家有什么用呢?

和大家一样,我一向觉得读别人的代码是一件痛苦的事情……何况我这个代码不是教学代码,写的有些乱,读起来就更加Faint勒~~~~

那么,这个源代码对大家有什么用呢?


活活~如果你和我一样,不喜欢读代码~即使是这样~也是有不少好冬冬的~

有些直接可以用:


首先打开库~~里面有一个 “fpsShow: 显示当前fps”
把里面的那个MC 放到你的任何flash里面,就可以显示你的flash当前的fps勒~~~~~
(这个是偶的工具库中的一个成员~~参看这里~~http://www.flashempire.net/showthread.php?s=&postid=1045424#post1045424)

还有这个~
打开Ox3DEngine 这个文件夹 ,里面有一个按键.swf,你拿不准键盘上某个键的键位的话,可以用这个测出来~~(这个不是Ox3DEngine 包的一部分……只不过放在那里比较顺手)



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#82003/12/3 19:49:06
Ox3DEngine包

目前已经实现了4x4矩阵运算部分(对于3D很重要)还有一些基本的图元运算 ~~~

使用方法:把Ox3DEngine文件夹 整个放到你自己的flash当前文件夹中。
然后在你要用到的as块 的第一行写上

import Ox3DEngine.*;

这样就可以直接调用Ox3DEngine里面的类了。

恩,这个可能对某些人有点用吧:Ox3D类(这是个顶层的类,文件是Ox3D.as)里面有一些类方法:

Ox3D.rectHitTestPoint()函数 (具体参数察看注释)可以判断一个点是否在一个4边形内部。

Ox3D.lineHitTestPoint()函数 可以判断一个点是不是很接近一条直线 (由一个参数给出要求的最小距离,如果为0的话就是精确判断点在直线上)

另外,本程序中的线框模型是由 Ox3D.lineModel() 函数绘制的
点是由 Ox3D.pointModel()绘制的。



5D平平

职务:管理员
等级:7
金币:20.0
发贴:5264
注册:2004/7/29 13:09:23
#92003/12/3 20:33:52
感觉强却没有意义



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#102003/12/3 22:56:26
= =b 我个人觉得满好玩的~~~厄厄……一切东西都是要有意义的马?

而且、而且、搞定之后就可以用flash作3D动画了~~



5D平平

职务:管理员
等级:7
金币:20.0
发贴:5264
注册:2004/7/29 13:09:23
#112003/12/4 14:36:50
DreadKnightOx在上个帖子中说
引用:
而且、而且、搞定之后就可以用flash作3D动画了~~

没有openGL和DirectX 最多是模拟 那个不是3d 没有什么效率的
不过真的很强



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#122003/12/5 11:22:07
呵~此话不然。3D不是什么特别的东西,openGL和DirectX也不过是一些帮助你实现开发包~只不过显卡支持这些API,效率很高,而flash用脚本作,效率很低而已。(- -flash就已经很慢了……然后再来个脚本……活活)
用flash做出来,效率不高是肯定的,但是是不是一定低到“不可用”呢?如果精简模型、用特殊的定制算法可不可以改善呢?没试过是不知道滴~~

另外,仿射贴图技术偶已经实现了 ,见
原理和技术讨论见帝国
http://www.flashempire.net/showthread.php?s=&threadid=183141 有兴趣地可以看看
(所谓仿射贴图,指的是贴图变换都是线性的,比如旋转、拉伸、错切等等。
这意味着,你在贴图上任意画一根直线段,他的中点把自己切成等长的两段; 经过仿射变换之后,该线段仍然是直线段,而且中点两边长度仍然相等)
这个编辑器还没有做到那一步;目前正在作直线工具……

而透视投影贴图呢?真正的透视投影对flash来说相当奢侈。但是也不是不可能,有些赛车游戏就用遮罩实现了 透视投影的地面。
比如说最近浮出来的老外做的这个~http://www.fastfroots.de/
虽然flash透视贴不适合做到3D物体上,但是用完全用仿射贴图贴到透视场景上绝对可行。PlayStation 的贴图就全是仿射贴图(没看出来吧?),活活,我当年还奇怪凭一台 30MHz的CPU 的机器 (CPU如此,GPU就不用说了)能够实现如此复杂的画面呢~
当然从N64开始游戏机都是 真正的透视贴图勒。



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#132003/12/9 17:28:36
有更新,目前可以生成和导出模型,但是零散的菜单事件处理十分影响效率。(呵呵,其实我和下面的朋友遇到了类似的问题~~)
所以下一步要修改菜单处理部分。

目前正在实现贴图菜单中~~~~~

更新的原文件


相关文件:点这儿打开



DreadKnightOx

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2003/12/3 16:43:07
#142003/12/9 17:42:07
嗯嗯,压缩包里面有使用帮助
目前可以生成模型勒,但是...还是没什么用~~~等待吧~~~完成度30%



5D冷笑话

职务:普通成员
等级:2
金币:0.0
发贴:664
注册:2002/2/18 13:50:50
#152003/12/27 21:48:27
光是看帖就觉得很强了。都没敢去下你的原程序……怕怕……