了解的朋友应该知道我最近一直都在鼓吹webgl.

今天有一点时间,加了一个Egret3D的群,就开始了这个坑。

耳听为虚,眼见为实。让我们荡起双桨,一起去刷一下egret

打开姿势

至于以什么姿势打开,就让我用截图来解释吧。

由于我是vs重度爱好者,egretWing用起来实在是苦不堪言,于是我又安装了

基本的姿势问题,请询Egret各种社区,我们就来谈一谈代码。

Egret3D基本概念

第一眼看到的代码是这样的,我勒个擦,让构造函数直接解决问题,这如果是我的兄弟,已经可以领辞退补助了。

不谈审美与爱好的问题,这个我们下一步会实际动手改一改,然我们看一下egret3D怎么玩。

Egret3DDrive.requestContext3D是真正的入口。

提供视口参数,初始化webgl对象,然后回调。(这种东西写在构造里我依然看不下去)

然后初始化一个view3D对象,view3D对象差不多就是一个场景的概念。

场景的组织也使用场景图的概念,view3d下面的节点可以组成一棵树。

Cameracontroller这东西不属于很核心的代码,不理他也没所谓。就是一个控制摄像机转头的鼠标操作。反正是update驱动的。实际项目开发中面对各种各样的需求,不太会直接套用这个,把他作为一个示例就可以了。

然后view3D.renden 就行了(喂,确认不是拼错了么,应该是render吧)

然后就是最最常规的update驱动。(帧驱动,主循环,不太清楚的同学可以参考博主的c#入门文字)

Egret3D的场景树

有这个view3D,就可以构成一个场景树,既然是场景树结构,那我们来看看他的结点构成

和Unity的场景树单一结点类型,但是关联到GameObject可以用组件聚合改变场景结点功能的设计不同。

其实unity这种设计现在的引擎用的比较多。

Egret3d使用一个更古老的设计方法,结点多态。

结点基类是

每个Object3D下面都可以再挂n个字节点。

然后有五个类型继承自他

分别是

1.billboard(朝向摄像机的面片)

2.Entity(一个空节点,设计意图不明)

3.Mesh(模型结点)

4. 摄像机

5. 灯光们

因为此时还没有官方文档,原谅我直接看源码

Egret3D的资源管理

Egret3D设计了AssetsManager,但是扩展性并不强,没有提供统一的二进制和字符串资源下载方式。

设计了三种格式 ESM, EAM, ECA,分别是模型,动画模型,摄像机动画,但是未见诸文档。

最关键的场景图,居然没有设计存取格式。

小结

Egret3D还处于一个比较早期的阶段,基础建筑尚不成熟。

  1. 存在renden这样的拼写错误
  2. 没有文档
  3. 资源管理不完善,没有提供统一的二进制资源和字符串资源下载方式,不易扩展
  4. 场景节点没有预留扩展性,连一个userdata:any 都没留
  5. 天空盒初始化接口不统一,资源不来自TextureLoader

从设计上还是模仿as3的接口设计,但是毕竟是中国人在建设的开源引擎。

从感情上我更愿意帮助egret3d去建设,更胜于使用相对成熟的babylon.js.

这个blog系列的后续部分我们会一点一滴的去改善和建设Egret3D。

Egret3D 研究报告(一)初试的更多相关文章

  1. Egret3D研究报告(二)从Unity3D导出场景到Egret3D

    Egret3D暂时没有场编的计划,但是我们知道unity3D是一个很好的场编. 有一些游戏即使不是使用Unity3D开发,也使用Unity3D做场编.这里就不点名了,而且并不在少数. 我们就这么干. ...

  2. 2016年中国微信小程序专题研究报告

    2016年12月29日,全球领先的移动互联网第三方数据挖掘和分析机构iiMedia Research(艾媒咨询)权威首发<2016年中国微信小程序专题研究报告>. 报告显示,82.6%手机 ...

  3. Unity3D和Egret3D的基情

    Unity3D依靠多平台发布这个核心特点,目前如日中天,屌丝引擎之王绝无来者.Egret白鹭引擎,也着实在微信上刷了一屏又一屏.这二者似乎风马牛不相及,但是这个无处不搞基的年代,让一切皆有可能. U3 ...

  4. egret3D与2D混合开发,画布尺寸不一致的问题

    egret3d的GUI目前还没有,在做3d游戏的时候没有UI可用,只能使用egret2d的EUI组件库,egret3d与egret2d混合开发,canvas3d的大小与位置与canvas2d并没有重合 ...

  5. caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题

    之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...

  6. 初试Nodejs——使用keystonejs创建博客网站2(修改模板)

    上一篇(初试Nodejs——使用keystonejs创建博客网站1(安装keystonejs))讲了keystonejs的安装.安装完成后,已经具备了基本的功能,我们需要对页面进行初步修改,比如,增加 ...

  7. 项目中初试PHP单元测试

    只能叫初试,前面虽然做了一些PHPUnit与团队所用框架的整合,但在整个团队还没有人可以主动推动这个事情,而作为Leader最重要的一种能力应该是"让正确的事情发生",所以今天开始 ...

  8. VPS -Digital Ocean -初试以及VPN的搭建

    首先恭喜你找到这篇博客,它会带你走出困境. 题外话(请忽略):一直以来想搞一个VPS,终于在自己的刺激下试了一下Digital Ocean,还没有使用很长时间不做太多评论,唯一给我的感觉是各种操作还算 ...

  9. 初试微信小程序

    2016年11月3日,微信小程序终于公测了,大家可以正式开发了.早在这之前,应公司要求,和同事就早早的试了一下微信小程序的开发,特此记录一下: 微信官方小程序文档:https://mp.weixin. ...

随机推荐

  1. Tcp/ip 报文解析

    在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...

  2. .NetCore MVC中的路由(2)在路由中使用约束

    p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...

  3. 探索ASP.NET MVC5系列之~~~2.视图篇(上)---包含XSS防御和异步分部视图的处理

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  4. JavaScript Object对象

    目录 1. 介绍:阐述 Object 对象. 2. 构造函数:介绍 Object 对象的构造函数. 3. 实例属性:介绍 Object 对象的实例属性:prototype.constructor等等. ...

  5. 在开启DRS的集群中修复VMware虚拟主机启动问题

    通过iSCSI方式连接到ESXi主机上的外挂存储意外失联了一段时间,导致部分虚拟主机在集群中呈现出孤立的状态,单独登陆到每台ESXi上可以看到这些虚拟主机都变成了unknow状态.因为有过上一次(VM ...

  6. jquery中的$(document).ready(function() {});

    当文档载入时执行function函数里的代码, 这部分代码主要声明,页面加载后 "监听事件" 的方法.例如: $(document).ready( $("a") ...

  7. 三星Note 7停产,原来是吃了流程的亏

    三星Note 7发售两个月即成为全球噩梦,从首炸到传言停产仅仅47天.所谓"屋漏偏逢连天雨",相比华为.小米等品牌对其全球市场的挤压.侵蚀,Galaxy Note 7爆炸事件这场连 ...

  8. DockerCon 2016 – 微软带来了什么?

    根据Forrester的调查,接近半数的企业CIO在考虑IT架构的时候更乐于接受开源方案,这主要是基于低成本,避免供应商锁定和敏捷的需求:同时另外一家North Bridge的调研机构的调查显示,20 ...

  9. JAVA设计模式之模板模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...

  10. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...