Dgame3D是基于as3开发的开源3d引擎,可用于开发3d的网页游戏产品。性能优良,目前是第一个alpha版本,由9秒社团开发并维护,欢迎更多开发者参与其中!

1.压缩包内容:

 1. 文档介绍2. 完整源码包3. Demo

2.资源介绍:

创建一个主类
public class Main extends Sprite
在构造函数中监听舞台的初始化
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
在init函数中创建Context3D
创建成功会有一个回调事件,在事件中创建dGame3DSystem,创建一个游戏类Game,最后再创建一个timer用于游戏类的主循环

dGame3DSystem.CreateContext3D( stage , function( context3D:Object ):void

{

    m_pdGame3D = new dGame3DSystem( context3D );m_pdGame3D.SetScreenSize( stage.stageWidth , stage.stageHeight );m_pGame = new Game( m_pdGame3D , stage );var pTimer:dTimer = new dTimer();pTimer.Create( 0 , 0 , function( p:dTimer , nRepeat:int ):void{if ( m_pdGame3D ){EnterFrameMove();}} );

} );

在EnterFrameMove函数中调用Present函数

public function EnterFrameMove():void

{

    m_pGame.EnterFrameMove();m_pdGame3D.Present();

}

复制代码

游戏类中可以初始化摄像机位置,创建场景,创建模型,创建人物。
关于摄像机的函数有
设置眼睛坐标
public function SetCameraEye( vEye:dVector3 ):void
设置目标点坐标
public function SetCameraLookat( vLookat:dVector3 ):void
设置上方向坐标
public function SetCameraUpVec( vUpVec:dVector3 ):void
获得眼睛坐标
public function GetCameraEye():dVector3
获得目标点坐标
public function GetCameraLookat():dVector3
获得上方向坐标
public function GetCameraUpVec():dVector3
获得摄像机方向
public function GetCameraDir():dVector3
获得摄像机方向与上方向的叉积
public function GetCameraCross():dVector3
设置最近裁剪面
public function SetCameraNearPlane( fNear:Number ):void
设置最远裁剪面
public function SetCameraFarPlane( fFar:Number ):void
获得最近裁剪面
public function GetCameraNearPlane():Number
获得最远裁剪面
public function GetCameraFarPlane():Number
设置摄像机眼睛绕目标点横向旋转角度
public function SetCameraRotationH( angle:Number ):void
设置摄像机眼睛绕目标点纵向旋转角度
public function SetCameraRotationV( angle:Number ):void
获得摄像机眼睛绕目标点横向旋转角度
public function GetCameraRotationH():Number
获得摄像机眼睛绕目标点纵向旋转角度
public function GetCameraRotationV():Number
设置摄像机眼睛与目标点的距离
public function SetCameraRotationRadio( length:Number ):void
获得摄像机眼睛与目标点的距离
public function GetCameraRotationRadio():Number
设置摄像机眼睛与目标点距离的最小,最大范围
public function SetCameraRotationRadioLimit( fNear:Number , fFar:Number ):void
设置摄像机向前移动(沿目标点方向)
public function SetCameraMoveForword( speed:Number ):void
设置摄像机向后移动
public function SetCameraMoveBack( speed:Number ):void
减少摄像机眼睛与目标点的距离
public function SetCameraMoveNear( speed:Number ):void
增加摄像机眼睛与目标点的距离
public function SetCameraMoveFar( speed:Number ):void
设置摄像机向左移动,(沿目标点方向与上方向的叉积方向)
public function SetCameraMoveLeft( speed:Number ):void
设置摄像机向右移动
public function SetCameraMoveRight( speed:Number ):void
设置摄像机目标点与眼睛的横向和纵向角度
public function SetCameraRotationLookat( angleH:Number , angleV:Number ):void
设置摄像机宽高比
public function SetCameraAspect( f:Number ):void
获得摄像机视矩阵
public function GetCameraView():dMatrix
获得摄像机投影矩阵
public function GetCameraProj():dMatrix
获得摄像机视投影相乘矩阵
public function GetCameraViewProj():dMatrix
设置摄像机正交投影宽高
public function SetCameraOrthoSize( width:Number , height:Number ):void
获得摄像机正交投影宽
public function GetCameraOrthoWidth():Number
获得摄像机正交投影高
public function GetCameraOrthoHeight():Number
设置摄像机透视类型,0为透视,1为正交
public function SetCameraPerspectiveType( nType:int ):void
获得摄像机透视类型
public function GetCameraPespectiveType():int
设置摄像机是否与地面碰撞
public function SetCameraCollection( bColl:Boolean ):void
获得摄像机是否与地面碰撞
public function GetCameraCollection():Boolean
场景相关函数有:
创建场景
public function CreateScene( width:int , height:int ):void
保存场景
public function SaveScene():ByteArray
读取场景
public function LoadSceneFromBin( data:ByteArray , onLoadComplate:Function , nFlag:int = 0 ):void
从文件中读取场景
public function LoadSceneFromFile( strFileName:String , onLoadComplate:Function , nFlag:int = 0 , onLoadProgress:Function = null ):void
获得场景文件名
public function GetSceneFileName():String
设置天空盒贴图文件
public function SetSkyboxTextureFileName( strFileName:String ):void
更新场景
public function UpdateScene( nFlag:int = 0 ):void
设置场景是否有碰撞
public function SetShowCanReach( bShow:Boolean ):void
创建模型
public function CreateMeshObj( strFileName:String ):int
创建特效
public function CreateEffectObj( strFileName:String , bPlayEndAutoDelete:Boolean = false ):int
创建人物
public function CreateCharacter( strFileName:String = null , pColorTransform:dColorTransform = null ):int
创建水面
public function CreateOcean( vPos:dVector3 ):int
考贝创建
public function CreateObjCopy( id:int ):int
删除物体
public function DeleteRenderObj( id:int ):void
设置物体是否显示
public function SetObjShow( id:int , bShow:int ):void
获得物体是否显示
public function GetObjShow( id:int ):int
设置物体坐标
public function SetObjPos( id:int , vPos:dVector3 ):void
获得物体坐标
public function GetObjPos( id:int ):dVector3
设置物体高度偏移
public function SetObjYOffset( id:int , fY:Number ):void
获得物体高度偏移
public function GetObjYOffset( id:int ):Number
设置物体缩放
public function SetObjSca( id:int , vSca:dVector3 ):void
获得物体缩放
public function GetObjSca( id:int ):dVector3
设置物体旋转
public function SetObjRot( id:int , vRot:dVector4 ):void
设置物体Y轴旋转
public function SetObjRotY( id:int , angle:Number ):void
获得物体旋转
public function GetObjRot( id:int ):dVector4
获得物体Y轴旋转
public function GetObjRotY( id:int ):Number
设置物体2维方向
public function SetObjDir2( id:int , x:Number , z:Number ):void
获得物体2维方向
public function GetObjDir2( id:int ):dVector2
获得物体类型
public function GetObjType( id:int ):int
获得物体文件名
public function GetObjFileName( id:int ):String
获得物体列表
public function GetObjList( nObjType:int ):Vector.
获得物体绑定盒
public function GetObjBoundingBox( id:int ):dBoundingBox
获得物体AABB
public function GetObjAABB( id:int ):dBoundingBox
获得物体世界矩阵
public function GetObjWorldMatrix( id:int ):dMatrix
设置物体是否接收鼠标
public function SetObjHandleMouse( id:int , bHandle:Boolean ):void
获得物体是否接收鼠标
public function GetObjHandleMouse( id:int ):Boolean
给定点获得场景地形高度
public function GetSceneHeight( x:Number , z:Number ):Number
获得场景地形大小
public function GetSceneSizeX():int
获得场景地形大小
public function GetSceneSizeZ():int
重设场景大小
public function ResizeScene( newWidth:int , newHeight:int , onComplateFun:Function ):void
获得全局光照
public function GetGlobalLightDir():dVector3
设置全局光照
public function SetGlobalLightDir( vDir:dVector3 ):void
获得场景文件列表
public function GetSceneObjFileNameList():Vector.
获得场景文件中物体列表
public function GetSceneStaticCharacter():Vector.
场景与直线碰撞
public function CheckCollectionRay( vPos:dVector3 , vDir:dVector3 , vPosOut:dVector3 = null , nObjType:int = RENDEROBJ_TYPE_ALL ):int
场景与鼠标碰撞
public function CheckCollectionMousePt( x:int , y:int , nWindowWidth:int , nWindowHeight:int , vPosOut:dVector3 = null , nObjType:int = RENDEROBJ_TYPE_ALL ):int
设置是否显示地形
public function SetShowTerrain( bShow:Boolean ):void
获得是否显示地形
public function isShowTerrain():Boolean
角色相关函数有:
获得当前鼠标选中的角色
public function GetMousePassCharacterID():int
角色添加装备模型
public function CharacterAddPartMesh( id:int , strPartName:String , strFileName:String ,

    strBoundingBonePartName:String = null , strBoundingBoneCharactorName:String = null , pColorTransform:dColorTransform = null ):void

角色添加动作
public function CharacterAddAnimationKey( id:int , strKeyName:String , strFileName:String , bCanMove:int = 1 , bAddToHorse:Boolean = false , onLoadComplate:Function = null ):void
设置角色动作属性
public function CharacterSetAnimationKeyDeclare( id:int , strKeyName:String , nStartTime:int , nLoopStartTime:int , nLoopEndTime:int ):void
设置物体在场景切换时不被删除
public function SetObjNoDelete( id:int , bNoDelete:Boolean ):void
设置人物坐骑
public function CharacterSetHorse( id:int , strHorseFileName:String , strHorseBoneName:String = "EQ-Horse" , strChatarctorBoneName:String = "EQ-Ride" ):void
播放人物动作
public function CharacterSetCurrentKey( id:int , strKeyName:String ):void
获得当前人物播放动作
public function CharacterGetCurrentKey( id:int ):String
获得人物动作最大播放时间
public function CharacterGetKeyMaxTime( id:int , strAniName:String ):int
设置人物移动和站立里的默认动作
public function CharacterSetRunAniName( id:int , strRunAniName:String , strStandAniName:String ):void
人物向给定方向移动
public function CharacterMoveDir( id:int , vDir:dVector3 ):void
人物向给定目标点移动
public function CharacterMoveTarget( id:int , vTarget:dVector3 , bSearchPath:Boolean = false , bCheckCollection:Boolean = false , moveEndFun:Function = null , fIgnoreLength:Number = 0.0 ):int
人物停止移动
public function CharacterStopMove( id:int ):void
设置人物移动速度
public function CharacterSetMoveSpeed( id:int , fSpeed:Number ):void
获得人物移动速度
public function CharacterGetMoveSpeed( id:int ):Number
获得人物是否正在移动中
public function CharacterIsRunning( id:int ):Boolean
设置人物名称
public function CharacterSetName( id:int , strName:String ):void
获得人物名称
public function CharacterGetName( id:int ):String
添加人物头上的数字
public function CharacterAddBNumber( id:int , list:Vector. , nPlayType:int = BNUNBER_PLAY_JUMP ):void
添加特效
public function CharacterAddEffect( id:int , strEffectName:String , strHitEffectName:String , vStartPos:dVector3 , nBoneHero:int , strStartBoneName:String , nStartTime:int = 0 , fFlySpeed:Number = 10.0 ):void
设置人物2维方向
public function CharacterSetObjDir2( id:int , nTargetID:int ):void
获得人物骨骼坐标
public function CharacterGetBonePos( id:int , strBoneName:String ):dVector3

文章转载自 开源中国社区 [http://www.oschina.net]

as3 的3Dwebgame引擎Dgame3D正式开源相关推荐

  1. 百度 Serverless 函数计算引擎 EasyFaaS 正式开源

    "2021年4月,百度函数计算引擎 EasyFaaS,正式开源!" 1.什么是 EasyFaaS? EasyFaaS 是一个依赖轻.适配性强.资源占用少.无状态且高性能的函数计算服 ...

  2. NVIDIA PhysX宣布正式开源 最强物理仿真引擎

    2019独角兽企业重金招聘Python工程师标准>>> 近日,辉达(NVIDIA)在官方部落格宣布正式开源被誉为「市面最强大物理仿真引擎」的 PhysX,除了广泛用于提升游戏特效,还 ...

  3. 华为正式开源数据虚拟化引擎 openLooKeng

    近日,华为正式宣布开源数据虚拟化引擎 openLooKeng,开源社区官网同步上线.openLooKeng 致力于为大数据用户提供极简的数据分析体验,让用户像使用"数据库"一样使用 ...

  4. 基于 Flutter 的 Web 渲染引擎「北海」正式开源!

    简介: 阿里巴巴历时 3 年自研开发的 Web 渲染引擎北海(英文名:Kraken)正式开源,致力打造易扩展,跨平台,高性能的渲染引擎,并已在优酷.大麦.天猫等业务场景中使用. 作者 | 染陌 来源 ...

  5. 五福背后的 Web 3D 引擎 Oasis Engine 正式开源

    简介: Oasis 从开源走向新的起点,用 3D 化的交互和表达让世界变得更美好. 相信大家已经体验了今年支付宝五福的活动,无论是今年的五福首页还是打年兽游戏都是由蚂蚁互动图形引擎(代号:Oasis ...

  6. 开源项目推荐 | 中科院自动化所历时9年打造的类脑认知智能引擎“智脉”正式开源部署至OpenI启智社区

    ​人脑能够自组织地协同数百项认知功能,灵活适应复杂多变的环境.如何整合多尺度生物可塑性法则来构建具有生物合理性和计算高效性的神经网络模型是类脑人工智能和计算神经科学领域共同关注和面临的重要挑战. 中国 ...

  7. 腾讯 JDK 11 正式开源,高性能、太牛逼啦!

    点击关注公众号,Java干货及时送达 大家好,我是基基. 今天,基基,跟大家分享一下,腾讯2021年开源的 JDK11 ,腾讯大数据JVM团队在Kona JDK11开源项目中,坚持了一贯的兼容性.可靠 ...

  8. 刚刚,华为全场景 AI 计算框架MindSpore正式开源!国产深度学习框架的春天来了!...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 此前,我们刚刚报道了旷视科技在3月25日开源深度学习框架 MegEngine ,3 ...

  9. 本人制作的股票技术分析软件正式开源(.net wpf)

    为什么80%的码农都做不了架构师?>>> 本人制作的股票技术分析软件正式开源 该软件以股票数据为核心,尤其以按日数据为主,采用图表方式可视化股票数据 ,为用户提供简单的股票选择可视化 ...

最新文章

  1. Storage与cookie
  2. 处理顶点——使用索引移除冗余顶点
  3. 你真的会使用XMLHttpRequest吗?
  4. 三星开源的 tcpflow 抓包工具
  5. -bash: unzip: 未找到命令_29 条运维工程师必会实用 Linux 命令
  6. JVM源码分析之JDK8下的僵尸(无法回收)类加载器
  7. 人工智能应用案例——智能客服
  8. 扁平化组织和层级化组织
  9. EXCEL97版本(.xls)和EXCEL2007之后的版本(.xlsx)对比
  10. 腾讯认证QQ空间秒升级为专业版方法!
  11. 商业智能BI的特点及发展
  12. 音频采集 via Media Foundation
  13. python 内存文件_python基础知识-7-内存、深浅、文件操作
  14. 物联网(IoT)行业的决策管理应用
  15. 最详细AMD Ryzen CPU,VMware 15安装macOS 10.15.x Catalina 记录(第一篇)
  16. modelsim仿真加速注意点
  17. Win10 wusa命令卸载系统更新
  18. 发光二极管和光敏二极管
  19. Hive管理之Web界面和远程管理
  20. 学计算机需要记住的快捷键,这几个电脑快捷键必须会,快学!

热门文章

  1. Centos安装(更新)git(亲测有效)
  2. linux安装mongodb并创建用户
  3. 我从佛学里悟到的自由
  4. 基于Fork/Join框架实现对大型浮点数数组排序(归并算法和插入排序算法) 1
  5. 洛谷 P1118 数字三角形游戏 Label:dfs
  6. hdu5651 xiaoxin juju needs help(逆元)
  7. JavaScript服务器端开发(函数实参对象arguments使用的几个注意事项)
  8. c/c++面试题(1)
  9. tcp_wrapper:简单的基于主机的访问控制工具
  10. oracle教程之解决DML事务锁定的冲突(二)