DEKI/ENGINE 文档
deki-3d 0.19.0
Deki 包参考
deki-3d

以渲染通道形式实现的软件光栅化 3D:网格、透视相机和 .obj 导入,与 2D 共用同一个帧缓冲。

仓库:github.com/dekiengine/deki-3d · 最新版本:0.19.0 · 需要引擎 0.19.0 或更高版本 · 依赖:deki-rendering

使用 DekiEditor --packages-add deki-3d <project> 或通过包管理器安装。引擎自身的组件和 C++ API 见 Deki 文档。

在编辑器中显示为 **3D**。

组件

组件 类别 说明
Mesh3DSettings 3D 3D 渲染通道的绘制方式:分块、纹理与顶点开关、光照和线程。
MeshComponent 3D 绘制 3D 网格。由对象的变换决定其位置;场景相机必须为透视模式才能看到它。

功能开关

可以从构建中去掉的部分。带有 define 的功能通过该 define 开关,其余的随其组件一起被剥离。

功能 define 默认值
Software rasteriser DEKI_FEATURE_3D_SOFTWARE 开

组件参考

Mesh3DSettings

3D 渲染通道的绘制方式:分块、纹理与顶点开关、光照和线程。

检视器中的名称:Mesh3D 设置 · 类别:3D · 类型:Deki3D::Mesh3DSettings

属性 类型 默认值 约束 说明
tileSize int32 32 8 到 512 分块边长,单位为像素。深度缓冲只有一个分块大小,因此 32 只占 2 KB,适合微控制器;桌面平台可以用 128 或更大。
perspectiveCorrect bool true 校正纹理透视。关闭后会出现 PlayStation 时代硬件的纹理扭曲,并节省约十分之一的填充开销。
vertexSnap bool false 将投影后的顶点取整到整像素,呈现定点数时代硬件的抖动效果。
lightYaw float -25 -180 到 180 场景光源的来向,绕垂直轴旋转。0 表示在相机后方,90 表示在右侧。
lightPitch float 55 -90 到 90 场景光源的高度。90 为正上方,0 与地平线齐平。
ambient float 0.25 0 到 1 背向光源的面仍有多亮。0 时这些面为全黑,效果强烈;数值越高,明暗越平淡。
fillThreads int32 1 1 到 16 在设备或模拟器构建中填充屏幕的线程数。各分块相互独立,因此这是唯一能随核心数提速的部分:1 表示完全不启动线程,2 适合双核开发板,超过核心数后便不再有帮助。编辑器以可卸载的 DLL 形式加载包,因此预览始终使用一个线程;两种方式画面完全相同。

MeshComponent

绘制 3D 网格。由对象的变换决定其位置;场景相机必须为透视模式才能看到它。

检视器中的名称:网格组件 · 类别:3D · 类型:Deki3D::MeshComponent

属性 类型 默认值 约束 说明
mesh AssetRef (MeshAsset) "" 已编译的网格资源。在此指定导入的模型;留空则改为绘制下方的基本体。
primitive enum "Cube" Cube, Quad, Pyramid 未指定网格资源时绘制的内置形状。
tintColor Color "#000000FF" 与网格自身的颜色相乘。白色则保持不变。
shading enum "VertexLit" Unlit, VertexLit, Flat 无光照为纯色。顶点光照根据场景光源为每个顶点着色。平面着色按整个三角形着色,呈现棱面分明的效果。
doubleSided bool false 同时绘制网格的内侧和外侧。填充开销约为两倍。

从 RendererComponent 继承 sortingOrder, ignoreClip, pixelSnap, alphaMode。

更新日志

更新日志为英文。

0.19.0

Changed

  • minEngine 0.19.0: built against engine 0.19.0, whose component metadata records the package each class is in. A build of this package from before does not load and is rebuilt.

Added

  • Japanese, Simplified Chinese and Korean: editor/lang/ja.json, zh.json and ko.json translate the names, tooltips and enum values this package's components show in the Inspector.
  • The package's editor text goes through the editor's translation (Tr), so it shows in the editor's language. Needs the editor release that adds Localization.h; raise minEngine to it when releasing.

0.18.0

Changed

  • minEngine 0.18.0. Reflection ABI 21: the package must be rebuilt.
  • Names follow the code style (deki-engine/docs/codestyle): types, functions and enum values are PascalCase, constants kPascalCase, members m_PascalCase, locals and parameters camelCase. The code is formatted with clang-format 22.
  • The functions the editor finds by name are PascalCase: Deki3DRegisterComponents, Deki3DGetAutoComponentCount, Deki3DEnsureRegistered and the rest. Built against engine ABI 21; a build of this package from before does not load and is rebuilt.
  • Renamed: MeshAttribute_Position and the other mesh flags are MeshAttributePosition, ...; MeshMaterial_AlphaTest is MeshMaterialAlphaTest; AssetTypeName is kAssetTypeName.

Removed

  • Reading version 3 mesh files (before 0.17.0). The editor builds them again.
  • The loader for Camera3DComponent, the 3D camera of scenes saved before 0.17.0. Open and save such a scene with 0.17 first.
  • The former names from before 0.16.0 (bare class names, and deki-gpio's DekiEsp32::ESP32PinSetup). A scene that old is upgraded with 0.17 first.

更早的版本:CHANGELOG.md


由包的反射数据生成(引擎 0.19.0)。属性名就是场景文件中使用的键。重命名后会保留别名(兼容性)。