用函数式编程,从0开发3D引擎和编辑器(三):初步需求分析
大家好,本文介绍了Wonder的高层需求和本系列对应的具体功能点。
确定Wonder高层需求
业务目标
Wonder是web端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引擎和编辑器(三):初步需求分析的更多相关文章
- 用函数式编程,从0开发3D引擎和编辑器(一)
介绍 大家好,欢迎你踏上3D编程之旅- 本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程,探讨了在从0开始构建3D引擎和编辑器的过程中,每一个重要的功能点.设计方 ...
- 用函数式编程,从0开发3D引擎和编辑器(二):函数式编程准备
大家好,本文介绍了本系列涉及到的函数式编程的主要知识点,为正式开发做好了准备. 函数式编程的优点 1.粒度小 相比面向对象编程以类为单位,函数式编程以函数为单位,粒度更小. 正所谓: 我只想要一个香蕉 ...
- 从0开发3D引擎(五):函数式编程及其在引擎中的应用
目录 上一篇博文 函数式编程的优点与缺点 优点 缺点 为什么使用Reason语言 函数式编程学习资料 引擎中相关的函数式编程知识点 数据 不可变数据 可变数据 函数 纯函数 高阶函数 柯西化 参考资料 ...
- 从0开发3D引擎(六):函数式反应式编程及其在引擎中的应用
目录 上一篇博文 介绍函数式反应式编程 函数式反应式编程学习资料 函数式反应式编程的优点与缺点 优点 缺点 异步处理的其它方法 为什么使用Most库 引擎中相关的函数式反应式编程知识点 参考资料 大家 ...
- 从0开发3D引擎(一):开篇
介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.最小功能集合(MVP)" 的3D引擎. 本系列的素材来自我们的产品 ...
- 从0开发3D引擎(四):搭建测试环境
目录 上一篇博文 了解自动化测试 单元测试 集成测试 端对端测试 通过打印日志来调试 了解运行测试 断点调试 通过Spector.js测试WebGL 通过log调试Shader 移动端测试 了解性能测 ...
- 从0开发3D引擎(七):学习Reason语言
目录 上一篇博文 介绍Reason Reason的优势 如何学习Reason? 介绍Reason的部分知识点 大家好,本文介绍Reason语言以及学习Reason的方法. 上一篇博文 从0开发3D引擎 ...
- 从0开发3D引擎:目录
介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.优秀的性能.最小功能集合(MVP)" 的3D引擎. 本系列的素材来 ...
- 从0开发3D引擎(八):准备“搭建引擎雏形”
大家好,现在开始本系列的第三部分,按照以下几个步骤来搭建引擎雏形: 1.分析引擎的需求 2.实现最小的3D程序 3.从中提炼引擎原型 4.一步一步地对引擎进行改进,使其具备良好的架构 5.实现与架构相 ...
随机推荐
- 【python测试开发栈】python内存管理机制(一)—引用计数
什么是内存 在开始进入正题之前,我们先来回忆下,计算机基础原理的知识,为什么需要内存.我们都知道计算机的CPU相当于人类的大脑,其运算速度非常的快,而我们平时写的数据,比如:文档.代码等都是存储在磁盘 ...
- ES6之Set
阮大神的es6看了一遍,但是对于Set和Map还是一知半解的,主要还是没怎么用吧,这里总结一下,以后再工作中也要多用用才行 怎么定义set呢?有什么用处? set是ES6中新增的类型,和数组类似,唯一 ...
- 使用python删除N天前的文件
python版本为:2.7 import os import sys import time # Sets how many days old files are deleted DAYS_N = 7 ...
- php 精度计算问题
PHP var_dump(intval(0.58 * 100)); 正确结果是 57,而不是 58 浮点运算惹的祸 其实这些结果都并非语言的 bug,但和语言的实现原理有关, js 所有数字统一为 N ...
- Java工作流引擎-中间件模式代码集成
关键词:工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 bpm工作流系统 java工作流主流框架 自定义工作流引擎 表单设计器 流程设计器 前端代码集成步骤 ...
- 【w、vmstat、top、sar、nload】各个命令 使用介绍
第7周第1次课(5月7日) 课程内容: 10.1 使用w查看系统负载10.2 vmstat命令10.3 top命令10.4 sar命令10.5 nload命令 10.1 使用w查看系统负载 w命令查看 ...
- Kafka topic Schema version mismatch error - org.apache.kafka.common.protocol.types.SchemaException
Problem description: There is error messge when run spark app using spark streaming Kafka version 0. ...
- [开源] 基于Layui组件封装的后台模版,HG-Layui-UI通用后台管理框架V1.0版
HG框架简介 HG-Layui-UI框架,是基于layui最新版UI搭建的一套通用后台管理框架,借鉴了市面上各大主流框架风格,采用iframe标签页实现,保留了传统开发模式的简单实用性. 为快速开发减 ...
- 优雅解决 SpringBoot 工程中多环境下 application.properties 的维护问题
微信号:geekoftaste, 期待与大家一起探讨! 背景 我们知道 SpringBoot 有一个全局的配置文件 application.properties, 可以把工程里用到的占位符,第三方库的 ...
- 使用curl创建简单的性能监控工具
cURL,全称Command Line URL viewer,是一种命令行工具,用来发送网络请求,然后得到和提取数据,显示在标准输出(stdout). 我们可以使用curl来获取网页的源码,显示头信息 ...