跳到正文
观猹观猹学社

Day 4 · 调用群核 Aholo API

昨天生成的模型,现在还只能在 Lux3D 里看。今天把它放进你自己的网页,让同学打开就能转着看、读到你的说明。如果你手里是一个 3DGS 场景,也可以从展示它开始。不会写代码也没关系,下面有一份能直接用的网页模板,剩下的让 AI 帮你改。

AI 3D · Day 4必学约 10 分钟观猹编辑部

读完你能:

  • 把 Lux3D 导出的 GLB 模型或 Aholo Reality 的场景放进自己的网页,用手机也能打开。
  • 给 AI 编程工具写一份清楚、不泄露密钥、做完能检查的需求,让它在模板上继续改。
  • 需要时去哪里申请 API key、去哪里查文档,让 AI 用群核的接口造资产或重建场景。

01先看清手里是哪一种素材

接着昨天的例子:你想做一个校园文创展示页,已经用 Lux3D 生成了一只纪念杯。今天的目标只有一个:让它出现在网页里,能转到背面看。上传、批量生成、用户登录这些,今天都先不做。

两种素材,放进网页的办法不一样:

素材拿什么怎样放进网页
Lux3D 模型资产库下载 GLB 格式three.js 加载,下一节有模板
Reality 的 3DGS 场景项目页的「获取嵌入代码」粘进网页,见 3DGS 手机采集

注意 Lux3D 别用默认的 ZIP 下载:里面的 MODEL.glb 放进网页会整只发灰,颜色在另外几张贴图里。选 GLB 就是一个文件,贴图都在里面。

两者不能混用:别把 GLB 交给 3DGS 的查看器,也别用 three.js 的模型加载器去开 3DGS 场景。Aholo API 则是另一回事:它让程序把素材交给群核去处理(文字或图片生成模型、上传视频重建场景),再把结果拿回来。只是展示已经做好的东西,今天用不到它。

示意图:图片、视频、全景图输入空间模型,经过重建、生成、理解、编辑得到三维空间,再输出为图片、视频、3DGS、Mesh 或结构化数据
Aholo 能做的事:把图片、视频或全景图变成三维空间,再输出成 3DGS、网格(Mesh)等你能放进网页的格式。

下面这些是今天会用到的官方资料,先收藏好,等会儿直接把链接发给 AI:

02让模型出现在网页里,再让 AI 帮你改

不会写网页,也能做。打开一个 AI 编程工具(比如 Trae 或 Claude Code),把模型文件、相关文档和一份需求交给它,让它写代码;你打开看效果,哪里不对就告诉它,它再改。这种用自然语言让 AI 写代码、边试边改的方式,叫 Vibe Coding。

为了让你第一步不卡住,我们先给一份已经测过能用的模板:新建一个文件夹,把昨天下载的 GLB 改名为 model.glb 放进去,再在同一个文件夹里新建 index.html,粘贴下面的代码。

<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>我的 3D 作品</title>
  <style>html,body{margin:0;height:100%;background:#f4f1ea}#app{width:100%;height:100%}</style>
  <script type="importmap">
    { "imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.180.0/build/three.module.js",
                   "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.180.0/examples/jsm/" } }
  </script>
</head>
<body>
  <div id="app"></div>
  <script type="module">
    import * as THREE from 'three';
    import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
    import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
    import { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js';

    const app = document.getElementById('app');
    const renderer = new THREE.WebGLRenderer({ antialias: true });
    renderer.setPixelRatio(devicePixelRatio);
    renderer.setSize(app.clientWidth, app.clientHeight);
    app.appendChild(renderer.domElement);

    const scene = new THREE.Scene();
    scene.background = new THREE.Color(0xf4f1ea);
    scene.environment = new THREE.PMREMGenerator(renderer).fromScene(new RoomEnvironment(), 0.04).texture;
    const camera = new THREE.PerspectiveCamera(40, app.clientWidth / app.clientHeight, 0.001, 100);
    const controls = new OrbitControls(camera, renderer.domElement);
    controls.enableDamping = true;

    // Lux3D 的模型按真实尺寸、单位是米,所以按模型大小自动摆相机
    new GLTFLoader().load('./model.glb', (gltf) => {
      const model = gltf.scene;
      scene.add(model);
      const box = new THREE.Box3().setFromObject(model);
      const size = box.getSize(new THREE.Vector3()).length();
      const center = box.getCenter(new THREE.Vector3());
      camera.position.copy(center).add(new THREE.Vector3(0, size * 0.3, size * 1.3));
      controls.target.copy(center);
      controls.update();
    });

    addEventListener('resize', () => {
      camera.aspect = app.clientWidth / app.clientHeight;
      camera.updateProjectionMatrix();
      renderer.setSize(app.clientWidth, app.clientHeight);
    });
    renderer.setAnimationLoop(() => { controls.update(); renderer.render(scene, camera); });
  </script>
</body>
</html>

注意:直接双击 index.html 是看不到模型的,浏览器不允许本地网页读取旁边的文件。在 AI 编程工具里对它说「在这个文件夹启动一个本地预览」,或者自己在文件夹里运行 npx serve,再用浏览器打开它给的地址。看到杯子、能拖动转到背面,第一步就成了。我们用 Lux3D 导出的纪念杯在电脑和手机尺寸下都试过这份模板。

接下来让 AI 在这个基础上改。需求要小。群核团队做过一个「空间博物馆」:三维展厅的墙上挂着一排空间封面,点进去就能浏览对应的空间。你今天只做它的最小版本:一张封面,点开能看到你的那件资产,不用先搭整个展厅。

空间博物馆的三维展厅里,墙上挂着不同空间的封面
墙上每幅封面都是一个入口。你的第一版,只要一个入口能打开一件资产就够了。

复制下面的需求,把方括号里的内容换成你自己的,连同文件夹一起交给 AI:

这个文件夹里的 model.glb 是我用群核 Lux3D 生成并导出的 3D 模型,index.html 已经能用 three.js 把它显示出来。请在它的基础上,帮我做一个[校园文创展示页]。

给谁看:[想挑一件校园纪念品的同学]。
第一版只做:一张封面图和作品名,点开后显示这个模型,能拖动从正面、侧面、背面看,旁边显示我写的一段说明:[你的说明]。
不要做:登录、上传、地图、批量生成;不要用代码自己画一个模型来代替 model.glb。

请先在本机启动预览,告诉我打开哪个地址、怎样检查。手机上也要能打开和拖动。

AI 做完,你亲手打开网页,转几个角度看看。如果只有封面、模型一片白、或者打不开,就把你做了什么、看到了什么告诉同一个 AI,比如:「点了封面还是只有图片,没有能转的模型,请检查 model.glb 有没有加载成功。」

手里是 3DGS 场景的同学,做法更简单:把需求里的「model.glb」换成「这段 Aholo Reality 嵌入代码」,粘上你复制的那段代码,让 AI 把它放进封面点开后的页面就行。

最后,请一位同学用他的手机打开试试。你的电脑上能看,不代表他的手机也行;想让别人也能打开,可以让 AI 教你把文件夹发布成一个公开网址。如果贴图丢了或者转不动,先修好再加新功能。

03给作品加一个值得点的操作

能展示了以后,想一想:同学为什么要打开你的网页?是挑一件文创、回看一次旅行,还是玩一小段游戏?给它加上一个值得点的互动,今天就能知道这个想法做不做得出来。下面是两个可以借鉴的例子。

想做游戏:先让一座塔站稳

前面提到的塔防小游戏,是把一处真实空间重建成游戏场景,让玩家在地面上摆塔、挡住敌人。你可以借这个思路做校园小游戏:在自己熟悉的地方放一个游戏物体。

塔防小游戏中,教堂与草地构成三维场景,左上角显示游戏控制与状态
看草地和道路:塔要摆在地面上,不能陷进去,也不能飘在空中。

3DGS 场景看起来有地面,但程序并不知道地面在哪,这个案例是另外铺了一层网格当「地板」来处理碰撞的。你的第一步可以只放一个物体,看它的高度对不对、挪动后会不会陷进地里;站稳了,再加敌人和计分。

想做空间相册:先打开一处回忆

「旅行足迹」是一个用 Aholo 重建场景做的三维相册:在地球仪上点一个城市,就能走进在那里重建的场景。你可以把它缩成「校园里的一处回忆」:一张地点封面、一个场景、一段你自己写的话。今天先确认点开后真能看到那个地方。

旅行足迹示例以地球仪作为地点入口,左侧提供旅程与视图按钮
地球仪上的每个点是一个入口,点进去就是那个地方重建出的三维场景。
今天的收尾:交出这三样

做到这里,今天就完成了:一个能打开、能转着看的网页(本机地址或公开网址都行),页面上写明用了哪件 Lux3D 资产或哪个 Reality 场景;一段十几秒的录屏,从封面点进去、转到背面(或完成那个小互动);一句同学试用时卡住的地方。明天就拿这些去定参赛选题,不用今天就做完整个游戏或整座博物馆。

04想让 AI 直接调用群核:申请 API key

两种情况需要用到 API:作品里要几十件道具,想让 AI 批量调用 Lux3D 生成;或者作品的核心是「同学上传自己拍的视频,网页还给他一个能浏览的三维空间」。这时先申请一个 API key,它相当于你账号的钥匙,调用一次就从你的积分里扣一次。

1
打开 API keys 页面

用群核账号登录 labs.aholo3d.cn/api-keys(也可以从首页左侧「管理 → API keys」进入)。

2
创建并当场存好

点右上角「创建 API key」,起个名字。完整的 key 只在弹窗里显示这一次,关掉后列表里只剩打码的值,所以当场复制,存进你电脑上的一个文本文件。丢了就删掉重建一个。

3
只让程序读它,不贴进对话

把它设成电脑的环境变量 AHOLO_API_KEY,或写进项目里一个不上传的 .env 文件,再告诉 AI「key 在环境变量 AHOLO_API_KEY 里」。别把 key 本身贴进和 AI 的对话、报错截图或网页代码里:网页代码任何人都能看到,别人拿到就能用你的积分。

Aholo 空间智能实验室的 API keys 页面,左侧菜单「管理」下选中 API keys,右上角是红色的创建 API key 按钮,列表里的 key 都是打码显示
API keys 页面。列表里只显示打码的 key,完整的只在创建时出现一次。

有了 key,最省事的办法是给 AI 编程工具装群核的 Skill,它会自己读文档、上传文件、等结果,不用你去研究接口。装法见 Skills 文档:

  • 批量生成模型:skillhub install lux3d,然后说「用 Lux3D 把 ./图片 文件夹里的每张图生成 GLB 模型,存到 ./assets」。
  • 视频重建场景:skillhub install aholo-3dgs-reconstruction,然后说「用 Aholo 把 ./video.mp4 重建成 3DGS,类型选物体,质量先用 low,完成后把查看地址给我」。
  • 用 Codex 的话:左侧「Plugins」里搜索「Aholo Lux3D」安装官方插件,效果同上(群核官方课程演示过,会先报积分、等你批准再生成)。

我们实测过这两条:重建这条从上传到创建任务不到一秒,结果会出现在你 Aholo Reality 的「我的项目」里,和网页上传的一样;免费账号同时只能跑一个生成任务,提交多了会被拒绝,但不扣积分。不用 Skill 也可以,把上面的 快速开始 和 API 参考 链接交给 AI,让它照着写。

想做成让别人上传视频的网站,先猜一猜:只给 AI 一段视频和一个 key,它就知道怎么接通吗?在下面的流程链上点亮你已经准备好的环节,亮着「下一步」的就是该先补的那一项。

开发前要准备:视频、开发者账号、放 API key 的服务器端、接口文档、Aholo Viewer 的格式要求。缺哪样先补哪样,齐了再让 AI 分步开发。

这种网站要有一个服务器替网页调用接口,key 只放在服务器上。第一版两个页面就够了:一个上传页提交视频,一个结果页打开重建好的场景。按这个顺序检查:视频真的提交上去了 → 拿到了重建结果 → 结果能用嵌入代码或 Viewer 打开、能转动。哪一步卡住了,就把那一步的现象(去掉 key)告诉 AI,让它排查。

想深入:大场景打开慢,或想在里面行走怎么办?

大场景可以先加载一个粗略版本,再根据你看的方向补充细节,这种做法叫细节层次(LOD)。它需要按 Viewer 文档提前处理场景文件。建议先用一个小场景跑通,再处理大的。

想在场景里走动,还需要碰撞数据:给地面、墙和门配上网格或体素做的「碰撞面」,否则人物会穿墙、掉下去。做好后沿着地面和门口实际走一遍检查。如果只是转着看,就不用做走动。

在重建的客厅场景中以第一人称行走,地面上可见橙色的碰撞网格线框
在重建的客厅里行走。地面上橙色的线框就是另外铺的碰撞面,人物靠它才知道哪里能走。