Dgame3D——开源3D网页游戏引擎

资源介绍:

创建一个主类

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

  1. dGame3DSystem.CreateContext3D( stage , function( context3D:Object ):void
  2. {
  3. m_pdGame3D = new dGame3DSystem( context3D );
  4. m_pdGame3D.SetScreenSize( stage.stageWidth , stage.stageHeight );
  5. m_pGame = new Game( m_pdGame3D , stage );
  6. var pTimer:dTimer = new dTimer();
  7. pTimer.Create( 0 , 0 , function( p:dTimer , nRepeat:int ):void
  8. {
  9. if ( m_pdGame3D )
  10. {
  11. EnterFrameMove();
  12. }
  13. } );
  14. } );
  15. 在EnterFrameMove函数中调用Present函数
  16. public function EnterFrameMove():void
  17. {
  18. m_pGame.EnterFrameMove();
  19. m_pdGame3D.Present();
  20. }

复制代码

游戏类中可以初始化摄像机位置,创建场景,创建模型,创建人物。
关于摄像机的函数有
设置眼睛坐标
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

效果图:

<ignore_js_op style=‘color: rgb(85, 85, 85); line-height: 21px; font-family: "Segoe UI", Segoe, "Segoe WP", Tahoma, "Microsoft YaHei", sans-serif; font-size: 14px; word-wrap: break-word;‘>

<ignore_js_op style=‘color: rgb(85, 85, 85); line-height: 21px; font-family: "Segoe UI", Segoe, "Segoe WP", Tahoma, "Microsoft YaHei", sans-serif; font-size: 14px; word-wrap: break-word;‘>

<ignore_js_op style=‘color: rgb(85, 85, 85); line-height: 21px; font-family: "Segoe UI", Segoe, "Segoe WP", Tahoma, "Microsoft YaHei", sans-serif; font-size: 14px; word-wrap: break-word;‘>

<ignore_js_op style=‘color: rgb(85, 85, 85); line-height: 21px; font-family: "Segoe UI", Segoe, "Segoe WP", Tahoma, "Microsoft YaHei", sans-serif; font-size: 14px; word-wrap: break-word;‘>

<ignore_js_op style=‘color: rgb(85, 85, 85); line-height: 21px; font-family: "Segoe UI", Segoe, "Segoe WP", Tahoma, "Microsoft YaHei", sans-serif; font-size: 14px; word-wrap: break-word;‘>

Dgame3D——开源3D网页游戏引擎,布布扣,bubuko.com

时间: 2024-08-03 14:24:29

Dgame3D——开源3D网页游戏引擎的相关文章

用TypeScript开发了一个网页游戏引擎,开放源代码

最开始学习电脑编程的原动力之一就是想自己编写游戏,一方面很好奇这些游戏是怎么做出来的,另一方面觉得有些地方设计的不合理,希望电脑游戏既能让人玩的有趣,又不浪费时间. 学校五年,毕业十年,学用了十多种编程语言.期间有过几次做游戏的尝试,但由于很难驾驭游戏程序的复杂度,都半途而废了.今年1月份看了一本书之后,重新激发了我做游戏的欲望. 这本书的名字叫<Building JavaScript Games>,书里面讲了如何利用HTML5技术在网页上绘制图片,播放声音,处理键盘和鼠标输入,让图像动起来等

游戏开发人员眼中的Unity 3D网页游戏測评报告

眼下.能够实现3D页游的主流技术有Silverlight.XNA.Flash.HTML5和Unity3D. 当中.Unity3D作为一款专注于3D游戏的浏览器插件.最近在国内外页游产品线骚动异常:本人从多方收集到可注冊的Unity3D页游測试发现,当下的Unity3D技术应用尤其在国内正遭遇着尴尬而无奈的窘迫境界,原由于何?大伙最好还是先看看当中7款游戏測试数据: <骑士的远征>(国产) 类型:SLG 模型与场景环境:低 性能:一般 下载体验:动态载入UI和模型动画,但非常卡,耗时久 操作:典

游戏开发者眼中的Unity 3D网页游戏测评报告

目前,能够实现3D页游的主流技术有Silverlight.XNA.Flash.HTML5和Unity3D.其中,Unity3D作为一款专注于3D游戏的浏览器插件,近期在国内外页游产品线骚动异常:本人从多方收集到可注册的Unity3D页游测试发现,当下的Unity3D技术应用尤其在国内正遭遇着尴尬而无奈的窘迫境地,原因为何?大伙不妨先看看其中7款游戏测试数据: <骑士的远征>(国产) 类型:SLG 模型与场景环境:低 性能:一般 下载体验:动态加载UI和模型动画,但很卡,耗时久 操作:典型的保姆

【Unity3d】3d网页游戏场景打包与加载

http://www.cnblogs.com/dosomething/archive/2012/04/07/2436353.html 3d游戏中  一个场景往往比较大  如果游戏的进行需要下载一个10M甚至更大的场景时  加载所用的时间会导致很大部分玩家的流失 我们知道unity3d中的内置地形是使用一张高度图  加载场景时  首先加载地形并显示  再去加载场景中的部件(比如树.房子等)  将会很有必要 在加载场景中的部件时  可以根据玩家当前所在的位置  由近到远的去加载 场景中的每个部件实际

转:开源3D引擎介绍

Delta3D:Delta3D是一个功能齐全的游戏引擎,可用于游戏,模拟或其他图形应用.其模块化设计集成了其他的开源项目,如‘开放场景图’,‘开放动力学引擎’,‘人物动画库’和‘OpenAL’ .Delta3D把这些开源项目集成到一个易于使用的应用程序编程接口中.Delta3D 下载地址:http://www.ogre3d.org/. NeoEngine:NeoEngine是一个全功能的用C++编写的开源3D三维游戏引擎.该引擎是多平台的,包括OpenGL和DirectX渲染功能,支持Windo

2016年 最火的 15 款 HTML5 游戏引擎

HTML5游戏从2014年Egret引擎开发的神经猫引爆朋友圈之后,就开始一发不可收拾,今年<传奇世界>更是突破流水2000万!从两年多的发展来看,游戏开发变得越来越复杂,需要制作各种炫丽的效果,还要制作各种基于 2D 或者 3D 的场景.作为一名开发者,分析了当下最火爆,最热门的HTML5游戏引擎供大家参考,希望大家也能找到属于自己的那款游戏开发引擎. 我在github上面收集了四十多款的HTML5开源游戏引擎,从里面star.fork等等参数分析其流行度,最后综合各方面元素,筛选出靠前的十

18 款超酷的 HTML5 和 JavaScript 游戏引擎库

现在的游戏开发变得越来越复杂,需要制作各种炫丽的效果,还要制作各种基于 2D 或者 3D 的场景.为了节省游戏开发者的时间,让开发者集中精力在游戏的创新上,出现了许许多多的游戏引擎.而现在为了实现跨平台,HTML5 和 JavaScript 成功为了游戏开发者必备的利器,特别是移动端的开发者,必须要能很好的掌握 HTML5 和 JavaScript. 现在这么多的游戏引擎,各有各的优点和缺点,为了帮助开发者们找到属于自己的那款游戏开发引擎,我们综合了许多方面的考虑,选出来以下的 18 个超酷的

18个功能强大的HTML5 和JavaScript游戏引擎库

如果你想要开发一个手机游戏,相关的游戏引擎库会是你寻找的目标之一.游戏引擎库的数量成百上千,哪一款才是你需要的呢?本文为你收集了18个功能强大的HTML5 和JavaScript 游戏引擎库. 相关推荐:排名前10的H5.Js 3D游戏引擎和框架 1. Impact JS Impact JS 是最好的游戏引擎之一,它能够帮助你创建那些玩家们高度关注的复杂图形图像.Impact JS 虽然不是免费的,但是它所带来的价值绝对是物超所值的. 2. Crafty JS 第二个要说到的非常流行的Java

认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程

认识AndEngine什么是AndEngine 随着Android手机.平板的盛行,Android下的游戏也不断的变得火热.而对于游戏开发有兴趣的同学们,应该也想要学习开发游戏.虽说游戏开发的引擎较多,但是大多数都需要花费一些资金才可以正式使用.而我们这里要讲解的AndEngine则是一个免费并且开源的2D游戏引擎.对于它的使用,读者不仅不必担心授权问题,而且还可以获得AndEngine源码,在需要的时候对其进行修改.本章就来讲解如何在自己的计算机上搭建一个自己AndEngine开发平台.本文选