大家好,本文介绍了Wonder的高层需求和本系列对应的具体功能点。

确定Wonder高层需求

业务目标

Wonder是web端3D开发的解决方案,包括引擎、编辑器,致力于打造开放、分享、互助的生态。

范围

  • 引擎
    Wonder.js WebGL 3D引擎

  • 编辑器
    Wonder-Editor

  • 工具
    提供给用户使用的各种工具,如gltf转wdb数据在线转换器等。

  • 增值服务
    增强用户在Wonder中发布的3D应用的能力,如提供数据统计、支付等。

  • 平台
    构建3D生态,提供如托管平台、开发资源商城等,用户可上传/下载相关资源。

上下文

  • 开发者
    开发者是Wonder的直接用户,可以划分为这几类:
    1)美术、策划同学
    2)完全没有编程基础,想快速开发Web 3D应用和游戏的同学(可以从Wonder的商城中下载资源;可以上传资源和3D项目到托管平台)
    3)程序员同学(可以写脚本、自定义shader、扩展编辑器和引擎之类的)

  • Wonder

  • 分发服务商
    开发者可在Wonder中发布Web 3D应用/游戏到各个分发平台,如微信小游戏等。

  • 终端用户
    终端用户直接在浏览器上消费开发者在Wonder中发布的Web 3D应用/游戏。

确定本系列对应的Wonder v1.0版本的功能点

引擎v1.0版本功能点

  • GameObject和Component
    引擎是ECS架构,场景是由多个GameObject组成,而每个GameObject又由各种Component组成。
    组件包括Transform、Geometry、Material等。

  • 纹理
    基本的纹理。

  • 光照
    支持方向光、点光源。
  • 多线程渲染
    通过浏览器的Shared ArrayBuffer和OffscreenCanvas,引擎支持开两个线程:主线程+渲染线程。
  • Scene Graph
    使用自定义的.wdb格式保存场景数据
    支持导入/导出.wdb
  • 流加载
    支持使用流加载来加载.wdb,让用户首次加载更顺滑。
    具体是指:
    用户会看到边加载边显示场景的效果。

  • IMGUI
    可以用代码调用API,来绘制UI。
  • 事件
    绑定和封装了事件,统一了pc端和移动端的事件。

编辑器v1.0版本功能点

  • GameObject和Component
    可直接操作GameObject和Component,如添加、删除、修改等。

  • 场景管理
    可通过场景树的形式看到该场景的所有GameObject
    可进行添加、删除、修改等操作

  • 撤销/重做

  • 输出
    可在控制台输出日志、错误等信息

  • 运行/停止
    可直接运行/停止场景

  • 快捷键
    可使用快捷键

  • 资产Asset
    可操作Material、纹理、模型等资产

  • Gizmo
    可通过Transform Gizmo,设置GameObject->Transform组件的位移、旋转、缩放等属性
    在编辑视图scene view中显示相机、光等小图标

  • 导入/导出
    可导入/导出场景、模型

  • 发布本地包
    可将做好的场景,发布为本地压缩包,然后自己部署到服务器上,供终端用户使用

  • PWA
    使用了Chrome的PWA技术,支持离线访问编辑器等

欢迎浏览上一篇博文:用函数式编程,从0开发3D引擎和编辑器(二):函数式编程准备

用函数式编程,从0开发3D引擎和编辑器(三):初步需求分析的更多相关文章

  1. 用函数式编程,从0开发3D引擎和编辑器(一)

    介绍 大家好,欢迎你踏上3D编程之旅- 本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程,探讨了在从0开始构建3D引擎和编辑器的过程中,每一个重要的功能点.设计方 ...

  2. 用函数式编程,从0开发3D引擎和编辑器(二):函数式编程准备

    大家好,本文介绍了本系列涉及到的函数式编程的主要知识点,为正式开发做好了准备. 函数式编程的优点 1.粒度小 相比面向对象编程以类为单位,函数式编程以函数为单位,粒度更小. 正所谓: 我只想要一个香蕉 ...

  3. 从0开发3D引擎(五):函数式编程及其在引擎中的应用

    目录 上一篇博文 函数式编程的优点与缺点 优点 缺点 为什么使用Reason语言 函数式编程学习资料 引擎中相关的函数式编程知识点 数据 不可变数据 可变数据 函数 纯函数 高阶函数 柯西化 参考资料 ...

  4. 从0开发3D引擎(六):函数式反应式编程及其在引擎中的应用

    目录 上一篇博文 介绍函数式反应式编程 函数式反应式编程学习资料 函数式反应式编程的优点与缺点 优点 缺点 异步处理的其它方法 为什么使用Most库 引擎中相关的函数式反应式编程知识点 参考资料 大家 ...

  5. 从0开发3D引擎(一):开篇

    介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.最小功能集合(MVP)" 的3D引擎. 本系列的素材来自我们的产品 ...

  6. 从0开发3D引擎(四):搭建测试环境

    目录 上一篇博文 了解自动化测试 单元测试 集成测试 端对端测试 通过打印日志来调试 了解运行测试 断点调试 通过Spector.js测试WebGL 通过log调试Shader 移动端测试 了解性能测 ...

  7. 从0开发3D引擎(七):学习Reason语言

    目录 上一篇博文 介绍Reason Reason的优势 如何学习Reason? 介绍Reason的部分知识点 大家好,本文介绍Reason语言以及学习Reason的方法. 上一篇博文 从0开发3D引擎 ...

  8. 从0开发3D引擎:目录

    介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.优秀的性能.最小功能集合(MVP)" 的3D引擎. 本系列的素材来 ...

  9. 从0开发3D引擎(八):准备“搭建引擎雏形”

    大家好,现在开始本系列的第三部分,按照以下几个步骤来搭建引擎雏形: 1.分析引擎的需求 2.实现最小的3D程序 3.从中提炼引擎原型 4.一步一步地对引擎进行改进,使其具备良好的架构 5.实现与架构相 ...

随机推荐

  1. Java中的继承、封装、多态的理解

    Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extend ...

  2. html基础——a标签

    a标签:超链接/锚点链接  实现页面跳转  只占据自己内容大小的位置 超链接: 使用 target="_self":表示在本页面跳转到 href 中的地址 target=" ...

  3. (四十四)golang--协程(goroutine)和管道(channel)相结合实例

    统计1-8000之间的素数. 整体框架: 说明:有五个协程,三个管道.其中一个协程用于写入数字到intChan管道中,另外四个用于取出intChan管道中的数字并判断是否是素数,然后将素数写入到pri ...

  4. python中将xml格式转json格式

    一.简介 在用python写脚本时,通常需要处理xml格式的文件或字符串.由于json格式处理的方便性, 我们可将其转为json格式进行处理. 二.步骤 1.安装工具包xmltodict 在命令行输入 ...

  5. android clipChildren 的使用与遇到的困难

    案例 在一次我写画板模块的时候,布局比较普通,但是需要子元素溢出父元素.其中一小块布局如下所示: 红色部分需要溢出,这个时候我想到了clipChildren. clipChildren 就是说我可以不 ...

  6. 如何使用Selenium来计算自动化测试的投资回报率?

    跨浏览器测试是一种测试,需要大量的精力和时间.通过不同的浏览器,操作系统,设备,屏幕分辨率测试Web应用程序,以评估针对各种受众的Web内容呈现的过程是一项活动.特别是如果手动处理.使用Seleniu ...

  7. php mysql 中文乱码解决,数据库显示正常,php调用不正常

    一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是 ...

  8. ASI中POST请求和文件下载

    //POST请求 1 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 1.URL NSURL *url = ...

  9. libnl的移植

    libnl简介 libnl是为了方便应用程序使用netlink接口而开发的一个库.这个库为原始netlink消息传递以及不同的netlink,family专用接口提供了一个统一的接口.libnl2.0 ...

  10. docker-primary

    docker-ce  docker网址 https://docs.docker.com/docsarchive/ Docker的安装和启动 官方安装文档链接:https://docs.docker.c ...