> For the complete documentation index, see [llms.txt](https://yangyuanchao.gitbook.io/0-3d/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yangyuanchao.gitbook.io/0-3d/master.md).

# 写书计划

之前我写了[《用函数式编程，从0开发3D引擎和编辑器》系列中的前3篇文章](https://zhuanlan.zhihu.com/p/64398870)，主要从 **思维** 层面来讨论设计和开发过程。

不过我认为这样的效果并不好，因为大部分读者都没有自己动手写过3D引擎，对他们来说，**思维**层面的讨论太过空泛。

因此我决定，本书从 **实战** 层面来讨论，让读者能真正跟着本书，一步一步地写出3D引擎和编辑器，真正体验到其中的快乐和成就感。

### 暂定书名

《3D编程旅程-从0开发3D引擎和编辑器》

我准备在“3D编程”的主题上写一系列的书，该系列暂名为“3D编程旅程”。后续可能会有《3D编程旅程-应用》、《3D编程旅程-模式》、《3D编程旅程-测试》等书。

### 主题

本书使用函数式编程范式，从0开始，通过一行一行的代码，写出了 简易的、完全可运行的 3D引擎和编辑器。

### 在线预览和反馈

在线阅读地址：<https://yangyuanchao.gitbook.io/0-3d/>

读者反馈QQ群： 731632604

### 技术栈

* 使用[Reasonml](https://reasonml.github.io/docs/en/what-and-why)作为编程语言
* 使用[Reason-React](https://reasonml.github.io/reason-react/)作为编辑器ui
* 使用WebGL 1作为底层api

### 篇幅

本书保持精简，专注在实现最小功能上，因此使用较少的篇幅。

#### 规划

4个月完成初稿，6个月发布

总字数20w字以内

总页数400页以内

#### 策略

* 尽量多章节，每个章节内容尽可能独立和精简，减少读者负担

### 重点

* 设计

  3D编程比较复杂，要让各个部分统一协调地工作，还要尽量地提高性能、增强扩展性。

  本书会展示很多设计层面的思考，仔细地设计架构，不断地重构，提高代码质量。
* 实现

  本书旨在让读者以最小的成本，快速实现一个简易的3D引擎和编辑器。因此，本书不讨论 **测试**、**工程化** 等内容。

### 特色

1.完全从0开始，强调实战

2.保持精简，只实现核心功能

3.完全、彻底地使用函数式编程。

现在3D领域使用函数式编程的资料很少，主流还是使用面向对象。 我以前也是用面向对象，不过自从我开始接触函数式编程，就拥抱了它。 面向对象很好，函数式编程也很好。使用哪一个，是每个人的自由。

本系列希望能扩展大家的视野和思维，展示函数式编程的魅力。

4.不仅探讨3D引擎，而且以编辑器作为主线。

讨论编辑器的资料很少，讨论3D引擎+编辑器的更少。

本系列完全基于我们的实战经验，以编辑器作为主线，3D引擎作为底层实现。

5.类型驱动设计。 尽量用类型和伪代码来探讨设计。

### 能给你带来什么收益？

1.读者能够在本书指引下，从0开发自己的3D引擎和编辑器

2.学习函数式编程及其在3D领域的应用

3.学习3D编程中基础的功能实现，如纹理、光照、模型等

4.学习设计和架构，如Data Oriented、多线程、管道job等

### 目标读者群

尽管本书使用的是WebGL这个Web 3D编程的API，但本书的设计和实现的思想是通用的，适合整个3D编程领域。

* 3D编程爱好者
* 函数式编程爱好者
* Web 3D开发工程师
* 3D引擎开发工程师
* 3D编辑器及工具开发工程师

### 章节安排

#### 第一部分：基础准备

* 函数式编程思想
* Reason语言基础语法
* WebGL基础
* 开发环境准备

#### 第二部分：实现Demo

* 快速写一个最小Demo
* 提出3D引擎
* 提出编辑器
* 优化

#### 第三部分：提出基本架构

* 提出基本架构
* 改进引擎架构，支持多种应用场景
* 改进引擎，支持多线程
* 重构：提出微服务

#### 第四部分：增加功能

* 编辑器增加Redo/Undo功能
* 编辑器增加场景管理功能
* 编辑器增加Inspector功能
* 编辑器增加控制台功能
* 增加camera
* 编辑器增加run/stop功能
* 编辑器增加grid plane 功能
* 编辑器增加camera/light gizmo功能
* 编辑器增加资产功能
* 增加light material组件
* 增加texture
* 编辑器增加导入/导出功能
* 编辑器增加发布本地包功能
* 增加event
* 编辑器增加picking功能
* 编辑器增加显示轮廓功能
* 编辑器增加transform gizmo功能
* 编辑器增加pwa功能

### 相关资料

[Wonder官网](https://www.wonder-3d.com) [用函数式编程，从0开发3D引擎和编辑器系列](https://www.cnblogs.com/chaogex/category/1456108.html)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yangyuanchao.gitbook.io/0-3d/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
