在线体验 关于项目
Planet Maker 是一个跑在浏览器里的离线优先 3D 星球编辑器:从水星、地球到月球九颗星体任选其一,或上传自己的 2:1 贴图开一颗新星球;捏地形起伏、调云层大气、摆太阳方向,再把 3D 物体、图钉标记和广告牌文字放上球面——所有放置物都自动贴合曲面朝向。
编辑器内置 20 个 CC0 轻量模型,也预留了 Tripo 创作入口——在 Tripo 里生成自定义模型后上传 GLB,点击球面即可放置。全部数据留在浏览器本地(无账号、无后端),成品可导出 PNG 快照、GLB 场景或可再编辑的 .planet.json 工程;作为 PWA 安装并下载离线库后,断网也能完整创作。
体验要点
- 从水星到月球九颗星体一键开局,或上传任意图片,本地裁成 2:1 全球贴图当作星球表面
- 地表起伏、粗糙度、云层、大气、自转速度与太阳方位全部滑杆可调
- 内置 20 个 CC0 模型;用 Tripo 生成自定义模型后上传 GLB,点击球面即放置,自动贴合地表朝向
- 一键导出 PNG 快照、GLB 场景或可再编辑的 .planet.json 工程;PWA 安装后可完全离线创作
技术解析
GLB 物体管线 · Tripo 出件直挂球面
物体面板内置 Tripo 创作入口——在 Tripo 里生成自定义模型,上传 GLB 就能用。任意 GLB(内置的 20 个 CC0 资产同理)导入后先按 Box3 包围盒归一化:自动居中、底部对齐原点、按最长边等比缩放;放置时由球面坐标换算出位置与四元数朝向,点击球面即贴地立在星球上,怎么转都不会歪。
星球渲染 · 一张贴图的物理材质
整颗星球只靠一张 2:1 贴图:meshPhysicalMaterial 把它同时当颜色图和凹凸图用(bumpScale 就是地形起伏滑杆),云层是独立的 alphaMap 球壳(金星特例用实色整层),大气为 BackSide 加色发光球壳,土星再加一圈 ringGeometry;太阳按方位角与仰角换算平行光位置,影子随之走。
自定义表面 · 全程本地处理
上传的图片不经过任何服务器:createImageBitmap 读入后居中裁到 2:1、限宽 2048,再用 canvas 编码成 webp 存进 localStorage;上传的自定义 GLB 走内存 objectURL,并刻意不写入工程 JSON。整个应用没有账号、没有后端,工程文件随浏览器数据存取。
性能与离线 · 按需渲染 + PWA
渲染循环只在需要时跑:关掉自转就切 demand 模式、页面隐藏时完全停帧,帧率吃紧还会自动降 dpr。vite-plugin-pwa 预缓存应用壳与常用初始资产,导出面板里的「下载离线库」把九颗星球与 20 个模型全量入缓存——断网也能继续造星球。


