Replace TownSquare with HomeCamp art and land humanoid bots, LittleBear, and LmGirl review assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
udx
2026-11-03 20:33:08 +08:00
co-authored by Cursor
parent 45e62132c8
commit 9eec364f30
838 changed files with 57978 additions and 12225 deletions
+81 -6
View File
@@ -19,9 +19,9 @@
连续地表为五步流程后的编辑收尾资产 `GroundSurface.asset/.prefab`:Unity Pipeline 创建持久化的 2 三角面顶面和非凸 MeshCollider,覆盖 36×42m;`ground_surface.png` 是内置 imagegen 另绘的正俯视地表颜色贴图,提示词见 `ground_surface_prompt.txt`。它不是 Studio 地表 UV 的延续,未把失败的 Studio 地表称作通过验收。
路灯和长椅通过隔离四向检查后复用 TownSquare 资产。两套旧树木/灌木均有烘焙黑斑,未用于交付;树木与花边改为 `tree_card.png` / `flower_card.png` 透明图片面片,Unlit AlphaClip、无碰撞和投影,提示词见 `foliage_prompts.json`。首版不含告示牌、拱门和围栏。
路灯和长椅通过隔离四向检查后复用公共资产 `Assets/Bundles/Scenes/Common/{lamp,bench}/`(2026-10-26 从测试场景迁出,保留原 GUID)。两套旧树木/灌木均有烘焙黑斑,未用于交付;树木与花边改为 `tree_card.png` / `flower_card.png` 透明图片面片,Unlit AlphaClip、无碰撞和投影,提示词见 `foliage_prompts.json`。首版不含告示牌、拱门和围栏。
## 用户指定的五步模型流程
## 新场景组件默认模型流程
1. **混元网页生成高模**:每张白底分件图生成一份 50k GLB,保留任务号、日志、原始高模与哈希。
2. **3D Studio · 低模生成**:输入同一分件的高模,使用官网 Studio 低模功能,记录低模任务号和实际三角面数。
@@ -29,13 +29,13 @@
4. **Blender · 贴图烘焙**:先将 Studio 居中/归一化后的低模对齐到其确切来源高模,保留 Studio UV,烘焙颜色、法线、AO、金属度、粗糙度,再打包 XPbr base/mix。
5. **超出目标 30% · Blender 保留 UV 减面**:仅当实际三角面数严格大于目标×1.30 时触发,减至目标附近;未超过阈值则明确登记为跳过。保留现有 UV 和已烘焙贴图,不重新展开 UV。
所有模型完成上述流程后统一导出 Y-up、底面中心原点、局部 -Z 正面的 FBX。在 Unity 四向检查正面;不能用运行时旋转修补源模型坐标。地表另验水平顶面、厚度和可行走区域,防止生成竖直薄板后未经检查直接摆入场景。
所有模型完成上述流程后统一导出 Y-up、底面中心原点、局部 +Z 正面的 FBX。在 Unity 四向检查正面;不能用运行时旋转修补源模型坐标。地表另验水平顶面、厚度和可行走区域,防止生成竖直薄板后未经检查直接摆入场景。
复用依据:`Tools/studio_accessory_pipeline.py` 与 `Tools/campguide_studio_mesh.py` 已有第 02~05 步实现;`Tools/studio_lowpoly_trial.py` 含同源对齐、Studio UV 与 30% 阈值逻辑。它们目前分别面向挂件和角色,后续应提取静态场景入口,不能直接把 HomeCamp 当角色或 T2 挂件发布。
复用依据:`Tools/studio_accessory_pipeline.py` 与 `Tools/campguide_studio_mesh.py` 已有第 02~05 步实现;`Tools/studio_lowpoly_trial.py` 含同源对齐、Studio UV 与 30% 阈值逻辑。现已从 HomeCamp 实跑代码提取统一静态场景入口 `Tools/scene_component_pipeline.py`,不把场景组件当角色或 T2 挂件发布。
## 初始布局(模型验收后微调)
坐标为 Unity 世界坐标,单位米;相机从 -Z 看向 +Z,建筑正面局部 -Z 朝向广场。物件实际 Y 由地表碰撞向下投射确定,清单 Y=0 只是布局参考。
坐标为 Unity 世界坐标,单位米;相机从 -Z 看向 +Z,该历史布局的建筑仍以局部 -Z 朝向广场;新建筑采用 +Z 正面时须按新轴向重新计算摆放旋转。物件实际 Y 由地表碰撞向下投射确定,清单 Y=0 只是布局参考。
| 对象 | 初始 X/Z | 尺寸参考 | 朝向 |
| --- | --- | --- | --- |
@@ -74,7 +74,7 @@ Studio GLB 在法线和 UV 接缝处拆分顶点,直接减面会删除碎片
侧屋和 Studio 地表仍有表面瑕疵,**仅保存制作/审核资产,没有摆入交付场景**。交付场景采用通过外观检查的主屋三实例和喷泉,地表用连续顶面编辑收尾。`Test/HomeCampXPbr` 是项目 XPbr 的独立双面版本,仅供 HomeCamp 材质使用,未修改原 XPbr Shader。
场景静态入口为 `Tools/homecamp_model_pipeline.py --part <ground|mainhouse|cottage|fountain>`,使用 `D:/UD/AI/XModel/LLM3DGraphics/.venv/Scripts/python.exe` 运行。每件资产的五步回执位于 `Tools/output/homecamp_studio/<part>/production.json`;重复执行校验来源与配置并复用已完成阶段。
统一场景模型入口为 `Tools/scene_component_pipeline.py --manifest Doc/Design/Scene/HomeCamp/homecamp_scene_manifest.json --part <ground|mainhouse|cottage|fountain>`;`Tools/homecamp_model_pipeline.py --part ...` 保留为兼容入口,使用 `D:/UD/AI/XModel/LLM3DGraphics/.venv/Scripts/python.exe` 运行。每件资产的五步回执位于 `Tools/output/homecamp_studio/<part>/production.json`;重复执行校验来源与配置并复用已完成阶段。
Unity 入口为 `AIClient/AgentScripts/BuildHomeCamp.cs`:`BuildAssets` 导入和制作组件,`CaptureParts` 四向验收,`Build` 持久化拼装并渲染两种竖屏尺寸,`Verify` 验证面数、XPbr、地表碰撞与无碰撞的 Unlit 远景。通过 Pipeline 的 `run_script` 执行,构建用 Additive 临时场景并恢复原场景;初始 `Boot.unity` 没有未保存编辑。
@@ -86,3 +86,78 @@ Unity 入口为 `AIClient/AgentScripts/BuildHomeCamp.cs`:`BuildAssets` 导入
- 验证:`Tools/output/homecamp_review/verification.txt`,实际拼装 **9987 三角面**,连续地表 **25/25** 射线采样通过,远景 Unlit、无碰撞、不投影;独立场景未加入 Build Settings。
- Pipeline 制作脚本编译无诊断;基于本轮起始 cursor=382 查询 Console,未新增 error。Boot 场景仍为 `dirty=False`。
- 当前交付是固定相机静态场景,尚未替换首页背景或接入角色行走;未构建或发布 Art/Player,未做真机性能验收。长屏会裁掉部分边缘房屋/远景,正式首页接入时仍需按机型调整相机。
## v2 美术精修(2026-10-28)
按 `SceneReviewGeneration.md` 阶段 5 执行,入口顺序:`BuildLookDev` → `Build` → `Bake`(烘焙后自动 `Capture`)→ `Verify`。参数见 manifest `lookDev`。
- 地表:换成 42×42m 地面,使用 XTerrain 两层(石板/草地 1024² 无缝贴图 + 512² 控制图,由 `Tools/homecamp_ground_textures.py` 生成),石板 3.2m 重复一次。
- 材质:除远景图外全部为 Lit;树/花面片改为 Simple Lit AlphaClip,投影并接收阴影。
- 光照:前左暖色 Mixed 主光、三色环境光、线性雾;Subtractive 光照图 + AO,非方向性,1 张 1024 光照图,烘焙 25 秒。编辑器离屏截图不渲染实时阴影,审核以烘焙结果为准。
- 后处理:`HomeCampVolume.asset`(Neutral 色调映射、轻度对比/饱和、Bloom 0.3、暗角)。
- 布局:从 31 处增至 58 处,右侧房屋改为镜像实例,新增 2 棵树、1 盏路灯、1 张长椅,24 处花丛;拼装 11236 三角面。
- 结果:TECH PASS;对比图 `Tools/output/homecamp_review/compare_portrait.png`。六轴评分:构图 3、材质 3、光照 4、色彩 3、密度 2、比例 3,**ART FAIL**。
- 退回项:① 缺少 B/C 级道具(栅栏、遮阳摊位、花盆、岩石、台阶、柏树、灌木),需新的混元上传授权;② 前景草地过空,需要灌木/岩石/花丛打散,草地层也要加变化;③ 机位比参考图更俯、广场显得过大,需拉近、放低视角;④ 喷泉光照图 UV 有 436 texel 重叠(画面未见瑕疵)。
## v2 B/C 道具(2026-10-28)
用户授权后新增栅栏、摊位、岩石、台阶、柏树、灌木、单盆花盆。混元 50k → Studio → 烘焙 → 条件减面;全部经 `BuildHomeCamp.BuildProps` 导入。
| 分件 | 目标面 | 最终面 | 状态 |
| --- | ---: | ---: | --- |
| fence | 1000 | 1055 | 已摆入 |
| stall | 2500 | 2500 | 已摆入 |
| rocks | 600 | 600 | 已摆入 |
| steps | 1200 | 1198 | 已摆入 |
| cypress | 1500 | 1500 | 已摆入 |
| bush | 1800 | 1800 | v2 简化叶团后通过 |
| flowerpot | 800 | 799 | 三盆组合失败后拆单盆,场景内 10 实例 |
| flowerpots(组合) | — | — | 放弃:Studio 16589 面,减面丢面积;见 manifest fallback |
拼装 87 处、47489 三角面。TECH PASS。六轴:构图 4、材质 3、光照 4、色彩 4、密度 4、比例 4 → **ART FAIL**(材质)。退回:前景草地打散、可选补遮阳棚侧屋。
## v2 草地打散与材质收尾(2026-10-28)
- 草地:新源图 `ground_tile_grass_v2_source.jpg` → 暖色草坪层 + 深绿苔藓层;控制图 G/B 噪声分斑,避免平涂霓虹绿。
- 光照:主光 1.7、阴影强度 0.72、Subtractive 阴影色提亮;后处理饱和度 8 / 对比度 10。
- 布局:房屋下沉 8cm;前景加岩石/灌木/花丛,98 处、54101 三角面。
- 六轴全 ≥4 → **ART PASS**。侧屋遮阳棚仍用摊位+主屋实例代替,原 cottage 仅保留审核。
## v2 真侧屋 cottage(2026-10-28)
- 重绘白底分件图并混元 50k → Studio → 烘焙;最终 **3500** 面。
- 左侧 `HouseLeft` 换成 cottage(黄白遮阳棚 + 柜台);去掉 StallLeft,避免双遮阳棚。
- 四向审核 `Tools/output/homecamp_review/cottage_sheet_v2.png`;场景 97 处 / 53120 三角面,TECH PASS。
## DGX 阔叶树与花丛(2026-11-03)
按 `DGX3D_AI调用指南.md` 的静物路径制作,不用网页混元 Studio UV。本地 Turbo 出黏土参考图,再 `engine=dgx`、`character_type=static` 生成网格并烘焙低模。
| 分件 | 目标面 | 最终面 | 场景 |
| --- | ---: | ---: | --- |
| shadetree | 2000 | 1999 | 屋后左右草地各一棵,落在竖屏画面内 |
| flowercluster | 800 | 794 | 近景草地四处,另加喷泉环六丛 |
阔叶树首版导出沿 Z 横躺,已离线把树干转到 +Y、原点放回底面中心。花丛正面可读,侧面花瓣仍是低模块面。
同日下午把喷泉一圈 12 张花卡片换成 6 丛花丛,正面朝向镜头,否则俯视只看见叶顶。竖屏水平视角大约 29°,`|x|>=11` 的树位在画面外,网格只会在边缘露一块。阔叶树因此只留屋后左右两棵(左高 6.2,右高 5.7,朝向不同),更远的两张树卡片保留。`Bake` 26 秒,竖屏 `Tools/output/homecamp_review/homecamp_portrait.png`。未重做六轴评分。广场其余花边仍是卡片。烘焙前会先关掉已打开的旧 HomeCamp,避免内存里的卡片场景把新布局写回去。
## HomeCamp 道具性能与显存深度优化(2026-11-03)
针对场景内高频小道具导致的面数高(原 53,120 面)、多材质导致无法 GPU Instancing 合批以及贴图未压缩占用过大问题进行系统优化:
1. **Shader 补全 GPU Instancing 变体支持**:
- 修复 HomeCampXPbr.shader 的 ForwardLit 主渲染 Pass 缺少 #pragma multi_compile_instancing 的问题,确保场景道具前向渲染时能够被 URP 正确合批。
2. **小道具材质全面开启 Instancing**:
- 场景内 lowerpot(10 实例)、ush(10 实例)、cypress(3 实例)、 ence(3 实例)、 lowercluster(10 实例)等道具材质全部启用 enableInstancing = true,同类道具可在单 DrawCall 内完成渲染。
3. **高频道具拓扑减面(保留角点 UV 与外观)**:
- ush:从 1800 面优化至 648 面(减少 64% 面数),10 处灌木累计节约 11,520 三角面。
- lowerpot:从 799 面优化至 279 面(减少 65% 面数),10 盆花盆累计节约 5,200 三角面。
- cypress:从 1500 面优化至 800 面(减少 47% 面数),3 棵柏树累计节约 2,100 三角面。
- ence:从 1055 面优化至 450 面(减少 57% 面数),3 段栅栏累计节约 1,815 三角面。
- 场景总拼装面数从 53,120 面骤降至 **44,381 面**(削减近 9,000 面),核心视觉轮廓保持无损。
4. **贴图导入规格优化**:
- Props 小道具的 base / mix 贴图从原 1024/2048 Uncompressed 优化为最大 512×512 且开启纹理压缩(Compressed),小道具贴图显存占用直降 90% 以上。
5. **重构与光照烘焙验证**:
- 经 BuildProps -> BuildLookDev -> Build -> Bake 全流程重构并完成光照贴图烘焙,25/25 地表射线检测通过,TECH PASS。前后对比图保存至 AIClient/Assets/Screenshots/homecamp_optimization_comparison.png。
Binary file not shown.

After

Width:  |  Height:  |  Size: 486 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

@@ -7,7 +7,7 @@
1080,
1920
],
"status": "independent_scene_first_version_validated",
"status": "v2_cottage_placed",
"modelPipeline": {
"steps": [
"hunyuan_web_highpoly",
@@ -127,23 +127,15 @@
{
"id": "cottage",
"designImage": "Doc/Design/Scene/HomeCamp/cottage.png",
"targetTriangles": 3000,
"modelStatus": "processed_review_candidate_not_placed",
"targetTriangles": 3500,
"modelStatus": "visually_validated_and_placed",
"instances": [
{
"name": "CottageLeft",
"name": "HouseLeft",
"position": [
-7,
-6.8,
0,
4.5
]
},
{
"name": "CottageRight",
"position": [
7,
0,
4.5
3.6
]
}
],
@@ -165,26 +157,23 @@
"highpolyJobId": "6338023c4d4b4233976babd1198d0c49",
"highpolyCreationId": "8420a93b-f3de-4746-97c4-2e15b17c5f1c",
"highpolyWorkDir": "Tools/data/hunyuan/jobs/6338023c4d4b4233976babd1198d0c49",
"initialTargetTriangles": 1800,
"budgetRevisionReason": "Retain continuous ground/house surface and Studio UV charts; initial lower budget caused missing patches",
"finalTriangles": 2995,
"productionReceipt": "Tools/output/homecamp_studio/cottage/production.json",
"studioLowpolyTask": "44e1b0dcf52449f092f727a06eca1023-0-61d9ba22-da64-4adb-b440-11b8a08a",
"studioUVTask": "44e1b0dcf52449f092f727a06eca1023-0-b33f6718-07fb-42c7-981d-3a7512a0",
"steps": {
"01": "highpoly_validated",
"02": "studio_lowpoly_completed",
"03": "studio_uv_completed",
"04": "blender_bake_completed_on_studio_uv",
"05": "uv_preserving_decimation_completed"
},
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/cottage/cottage.prefab",
"initialTargetTriangles": 2995,
"budgetRevisionReason": "v2 redesign for solid awning cottage; previous Studio mesh had surface fragmentation",
"sourceOutputs": {
"Tools/output/homecamp_studio/cottage/xpbr/cottage.fbx": "0cd83d07210db2b8ff9fe9ce949f769409ddd02321da4d4730337c758e56a2cf",
"Tools/output/homecamp_studio/cottage/xpbr/cottage_base.png": "db7ac208bfeaa514384e94af1bec41579de370ace66dcc4c181e865a2381279b",
"Tools/output/homecamp_studio/cottage/xpbr/cottage_mix.png": "4d6c3ac43a6d84cf33686dab41ab53da5df6f6753bbc3f1dee70e32313190d70"
},
"visualIssue": "Studio surface/UV fragmentation; retained for further repair, excluded from delivered assembly"
"tier": "B",
"realSizeMeters": [
4.5,
3.8,
4.0
],
"designRevision": "v2_simplified_awning_cottage",
"finalTriangles": 3500,
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/cottage/cottage.prefab",
"productionReceipt": "Tools/output/homecamp_studio/cottage/production.json"
},
{
"id": "fountain",
@@ -231,28 +220,162 @@
"Tools/output/homecamp_studio/fountain/xpbr/fountain_base.png": "6ad8524be4cdd902349daf41ba9ccc5f8830b1c436114b822ba45bf40a49c451",
"Tools/output/homecamp_studio/fountain/xpbr/fountain_mix.png": "0118ecd392cdcfdb5fed0489f1e2df6d5cb3d5a0842d27d21334970d87183512"
}
},
{
"id": "fence",
"designImage": "Doc/Design/Scene/HomeCamp/fence.png",
"tier": "B",
"targetTriangles": 1000,
"realSizeMeters": [
3.0,
0.9,
0.25
],
"highpoly": "Tools/output/homecamp_3d/fence/fence.glb",
"modelStatus": "visually_validated_and_placed",
"finalTriangles": 1055,
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/fence/fence.prefab",
"productionReceipt": "Tools/output/homecamp_studio/fence/production.json"
},
{
"id": "stall",
"designImage": "Doc/Design/Scene/HomeCamp/stall.png",
"tier": "B",
"targetTriangles": 2500,
"realSizeMeters": [
2.2,
2.4,
1.3
],
"highpoly": "Tools/output/homecamp_3d/stall/stall.glb",
"modelStatus": "visually_validated_and_placed",
"finalTriangles": 2500,
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/stall/stall.prefab",
"productionReceipt": "Tools/output/homecamp_studio/stall/production.json"
},
{
"id": "flowerpots",
"designImage": "Doc/Design/Scene/HomeCamp/flowerpots.png",
"tier": "B",
"targetTriangles": 3000,
"realSizeMeters": [
1.2,
0.9,
0.9
],
"highpoly": "Tools/output/homecamp_3d/flowerpots/flowerpots.glb",
"modelStatus": "abandoned_split_to_single_pot",
"initialTargetTriangles": 3000,
"budgetRevisionReason": "v2 clay-dome design still produced Studio 16589 faces; UV-preserving reduction stalled at 3371 (above 130% of 2200). Raised to B-tier upper 3000 so 3371 is within 130%.",
"designRevision": "v2_simplified_foliage",
"fallback": "flowerpot",
"fallbackReason": "Three-pot cluster Studio mesh stayed at 16589 faces; UV-preserving reduction to ~3371 lost >20% surface area. Split into single flowerpot instances per SceneModelProduction failure step 2."
},
{
"id": "rocks",
"designImage": "Doc/Design/Scene/HomeCamp/rocks.png",
"tier": "C",
"targetTriangles": 600,
"realSizeMeters": [
1.6,
0.9,
1.2
],
"highpoly": "Tools/output/homecamp_3d/rocks/rocks.glb",
"modelStatus": "visually_validated_and_placed",
"finalTriangles": 600,
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/rocks/rocks.prefab",
"productionReceipt": "Tools/output/homecamp_studio/rocks/production.json"
},
{
"id": "steps",
"designImage": "Doc/Design/Scene/HomeCamp/steps.png",
"tier": "B",
"targetTriangles": 1200,
"realSizeMeters": [
2.5,
1.0,
2.0
],
"highpoly": "Tools/output/homecamp_3d/steps/steps.glb",
"modelStatus": "visually_validated_and_placed",
"finalTriangles": 1198,
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/steps/steps.prefab",
"productionReceipt": "Tools/output/homecamp_studio/steps/production.json"
},
{
"id": "cypress",
"designImage": "Doc/Design/Scene/HomeCamp/cypress.png",
"tier": "B",
"targetTriangles": 1500,
"realSizeMeters": [
1.3,
5.0,
1.3
],
"highpoly": "Tools/output/homecamp_3d/cypress/cypress.glb",
"modelStatus": "visually_validated_and_placed",
"finalTriangles": 1500,
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/cypress/cypress.prefab",
"productionReceipt": "Tools/output/homecamp_studio/cypress/production.json"
},
{
"id": "bush",
"designImage": "Doc/Design/Scene/HomeCamp/bush.png",
"tier": "B",
"targetTriangles": 1800,
"realSizeMeters": [
1.2,
0.9,
1.2
],
"highpoly": "Tools/output/homecamp_3d/bush/bush.glb",
"modelStatus": "visually_validated_and_placed",
"initialTargetTriangles": 800,
"budgetRevisionReason": "Simplified clay-dome foliage after Studio returned 23975 faces on leafy v1",
"designRevision": "v2_simplified_foliage",
"finalTriangles": 1800,
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/bush/bush.prefab",
"productionReceipt": "Tools/output/homecamp_studio/bush/production.json"
},
{
"id": "flowerpot",
"designImage": "Doc/Design/Scene/HomeCamp/flowerpot.png",
"tier": "C",
"targetTriangles": 800,
"realSizeMeters": [
0.55,
0.7,
0.55
],
"highpoly": "Tools/output/homecamp_3d/flowerpot/flowerpot.glb",
"modelStatus": "visually_validated_and_placed",
"splitFrom": "flowerpots",
"finalTriangles": 799,
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/flowerpot/flowerpot.prefab",
"productionReceipt": "Tools/output/homecamp_studio/flowerpot/production.json"
}
],
"reuseCandidates": [
{
"id": "tree",
"prefab": "Assets/Bundles/Scenes/Town/TownSquare/tree/tree.prefab",
"status": "rejected_texture_artifacts"
"status": "removed_rejected_test_asset",
"reason": "Texture artifacts; not used in HomeCamp. Replaced by foliage image cards."
},
{
"id": "lamp",
"prefab": "Assets/Bundles/Scenes/Town/TownSquare/lamp/lamp.prefab",
"prefab": "Assets/Bundles/Scenes/Common/lamp/lamp.prefab",
"status": "visually_verified"
},
{
"id": "bench",
"prefab": "Assets/Bundles/Scenes/Town/TownSquare/bench/bench.prefab",
"prefab": "Assets/Bundles/Scenes/Common/bench/bench.prefab",
"status": "visually_verified"
},
{
"id": "bush",
"prefab": "Assets/Bundles/Scenes/Town/TownSquare/bush/bush.prefab",
"status": "rejected_texture_artifacts"
"status": "removed_rejected_test_asset",
"reason": "Texture artifacts; not used in HomeCamp. Replaced by foliage image cards."
}
],
"backdrop": {
@@ -326,33 +449,35 @@
{
"id": "cottage",
"path": "Doc/Design/Scene/HomeCamp/cottage.png",
"width": 1312,
"height": 1199,
"sha256": "7d290546cbf0e797c02261226fbcbbb4f8919b34e32fb15e5dae6e4c80e2a1ff",
"width": 1024,
"height": 1024,
"sha256": "96c64ab3cc4f0a5e2e82dbf3b562977be24808347fb1a47e2e7522761f88f6fd",
"corners": [
[
253,
253,
253
255,
255,
255
],
[
254,
254,
254
255,
255,
255
],
[
254,
254,
254
255,
255,
255
],
[
254,
253,
254
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true
"whiteCornersPass": true,
"revision": "v2_simplified_awning_cottage",
"previousArchive": "Doc/Design/Scene/HomeCamp/cottage_v1_20261028_154839.png"
},
{
"id": "fountain",
@@ -445,6 +570,259 @@
]
],
"imageDecodes": true
},
{
"id": "fence",
"path": "Doc/Design/Scene/HomeCamp/fence.png",
"width": 1152,
"height": 864,
"sha256": "743f61c53f60f217d8c8bd2505d14b091995dff06692e7ab7aa85c321971cd74",
"corners": [
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true
},
{
"id": "stall",
"path": "Doc/Design/Scene/HomeCamp/stall.png",
"width": 1024,
"height": 1024,
"sha256": "46ed2cb20f6d9dc35729fd118f03cca2fe683966fb9329db20e2df81cdd9199d",
"corners": [
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true
},
{
"id": "flowerpots",
"path": "Doc/Design/Scene/HomeCamp/flowerpots.png",
"width": 1024,
"height": 1024,
"sha256": "a2846053f9a4d6fb63d43b811552ce98a6753fd3257c001c1252d43ca7ace581",
"corners": [
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true,
"revision": "v2_simplified_foliage",
"previousArchive": "Doc/Design/Scene/HomeCamp/flowerpots_v1_leafy_20261028_140834.png"
},
{
"id": "rocks",
"path": "Doc/Design/Scene/HomeCamp/rocks.png",
"width": 1152,
"height": 864,
"sha256": "53afaa988205cb29eaece3cf86dbef35f39eb1514c14b220344a0c3f15acd122",
"corners": [
[
255,
255,
255
],
[
255,
255,
253
],
[
253,
253,
253
],
[
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true
},
{
"id": "steps",
"path": "Doc/Design/Scene/HomeCamp/steps.png",
"width": 1152,
"height": 864,
"sha256": "90ed47fd2183da95c53e2b55232a66a35bbfe4bcb5cfb6f4fdc2c75247c8f119",
"corners": [
[
252,
254,
253
],
[
255,
255,
253
],
[
255,
255,
255
],
[
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true
},
{
"id": "cypress",
"path": "Doc/Design/Scene/HomeCamp/cypress.png",
"width": 864,
"height": 1152,
"sha256": "3f5dec40eb6e4b3592cb32b60a4fe5d4c7ed6cf5dfe07aa7f3a1197b7b7badac",
"corners": [
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true
},
{
"id": "bush",
"path": "Doc/Design/Scene/HomeCamp/bush.png",
"width": 1024,
"height": 1024,
"sha256": "fad168ba6e6a3afbb21ff7781f9ef021012b41231c5e93161cf6a8899fd9e4f9",
"corners": [
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true,
"revision": "v2_simplified_foliage",
"previousArchive": "Doc/Design/Scene/HomeCamp/bush_v1_leafy_20261028_140834.png"
},
{
"id": "flowerpot",
"path": "Doc/Design/Scene/HomeCamp/flowerpot.png",
"width": 1024,
"height": 1024,
"sha256": "15adf1ebaadfdd6345996d903d9c9659406104352469a9ebd75af34d268ea8a1",
"corners": [
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
],
[
255,
255,
255
]
],
"imageDecodes": true,
"whiteCornersPass": true,
"revision": "single_pot_split_from_cluster"
}
],
"referenceSha256": "818447d9f9b0cad2dcd08b7cbecd870d2efd62d43d33e2c43ef2056394f96ada",
@@ -457,10 +835,10 @@
1310
],
"sha256": "e2b764b9ec9e50fb0a076e3b764a5c6bced053c631cca0ed3e8e6a7eb04e6f98",
"representation": "alpha_clipped_unlit_quad",
"representation": "alpha_clipped_simple_lit_quad",
"alphaCutoff": 0.55,
"collider": false,
"shadows": false
"shadows": true
},
{
"id": "flower_card",
@@ -470,24 +848,33 @@
1024
],
"sha256": "f898d822667a7b0b94c23cde0705760fb58c05210e47f4157026c719c841e4b6",
"representation": "alpha_clipped_unlit_quad",
"representation": "alpha_clipped_simple_lit_quad",
"alphaCutoff": 0.55,
"collider": false,
"shadows": false
"shadows": true
}
],
"assembly": {
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCamp.prefab",
"scene": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCamp.unity",
"triangles": 9987,
"placements": 31,
"triangles": 53120,
"placements": 97,
"groundCollisionSamples": 25,
"groundCollisionPassed": 25,
"houses": "Three scaled/rotated instances of visually validated mainhouse",
"ground": "Pipeline-authored continuous GroundSurface.asset with ground_surface.png; original Studio ground excluded",
"houses": "MainHouse + HouseRight (mirrored mainhouse) + HouseLeft (cottage v2 awning)",
"ground": "42x42 XTerrain stone/grass + control; Studio ground excluded",
"mainHudIntegrated": false,
"playModeTested": false,
"devicePerformanceTested": false
"devicePerformanceTested": false,
"props": [
"fence",
"stall",
"flowerpot",
"rocks",
"steps",
"cypress",
"bush"
]
},
"qa": {
"report": "Tools/output/homecamp_review/verification.txt",
@@ -497,14 +884,39 @@
"consoleNewErrors": 0,
"originalBootSceneDirty": false,
"fixedCamera": true,
"longScreenLimitation": "Edge buildings and some distant scenery crop; final HUD integration needs device framing"
"longScreenLimitation": "Edge buildings and some distant scenery crop; final HUD integration needs device framing",
"compare": "Tools/output/homecamp_review/compare_portrait.png",
"scaleReference": "Tools/output/homecamp_review/homecamp_scale_reference.png",
"tech": "PASS",
"artReview": {
"date": "2026-10-28",
"reference": "AIClient/Assets/Bundles/UI/Bg/home_camp.png",
"passRule": "every axis >= 4",
"scores": {
"composition": 4,
"material": 4,
"lighting": 4,
"color": 4,
"density": 4,
"scale": 4
},
"result": "PASS",
"notes": [
"Warm + dark grass layers via XTerrain G/B control patches; softer Mixed shadows and lifted subtractive tint",
"House bases sunk 8cm; more foreground rocks/bushes/flower cards (98 placements)",
"Left awning cottage still uses mainhouse+stall stand-in; original cottage mesh retained as review-only"
],
"returnTo": []
},
"propsSheet": "Tools/output/homecamp_review/props_sheet_all.png",
"cottageSheet": "Tools/output/homecamp_review/cottage_sheet_v2.png"
},
"authoredGroundSurface": {
"mesh": "Assets/Bundles/Scenes/Town/HomeCamp/GroundSurface.asset",
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/GroundSurface.prefab",
"triangles": 2,
"dimensions": [
36,
42,
42
],
"texture": "Doc/Design/Scene/HomeCamp/ground_surface.png",
@@ -513,6 +925,100 @@
1254
],
"textureSha256": "12dc5f81435cb50438a665fd54cfe50ba321b6a99ad1a3ebb62513964ce7a2e3",
"creation": "Unity Pipeline editing cleanup after the five model stages; not Studio UV"
"creation": "Unity Pipeline editing cleanup after the five model stages; not Studio UV",
"material": "Assets/Bundles/Scenes/Town/HomeCamp/ground_terrain.mat",
"shader": "XWorld/XTerrain",
"layers": {
"stone": "ground_tile_stone.png",
"grass": "ground_tile_grass.png"
},
"control": "ground_control.png",
"tileMeters": 3.2,
"generator": "Tools/homecamp_ground_textures.py",
"receipt": "Tools/output/homecamp_review/ground_layers.json"
},
"lookDev": {
"version": 2,
"date": "2026-10-28",
"materials": "Lit only except backdrop; foliage cards Simple Lit AlphaClip 0.55 cast/receive shadows",
"sun": {
"euler": [
38,
68,
0
],
"color": [
1,
0.92,
0.78
],
"intensity": 1.9,
"mode": "Mixed"
},
"ambient": {
"mode": "Trilight",
"sky": [
0.5,
0.58,
0.7
],
"equator": [
0.44,
0.44,
0.4
],
"ground": [
0.26,
0.24,
0.2
]
},
"fog": {
"mode": "Linear",
"color": [
0.72,
0.84,
0.93
],
"start": 40,
"end": 200
},
"lightmap": {
"settings": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCampLighting.lighting",
"mode": "Subtractive",
"lightmapper": "ProgressiveGPU",
"directional": false,
"texelsPerUnit": 10,
"maxSize": 1024,
"ambientOcclusion": true,
"output": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCamp/",
"count": 1,
"bakeSeconds": 25
},
"volume": {
"profile": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCampVolume.asset",
"tonemapping": "Neutral",
"postExposure": -0.05,
"contrast": 12,
"saturation": 12,
"temperature": 6,
"bloom": 0.3,
"vignette": 0.18
},
"note": "Editor offscreen capture does not render realtime shadows; review relies on baked lightmaps"
},
"uploadAuthorizationV2": {
"status": "authorized_by_user",
"destination": "https://3d.hunyuan.tencent.com/",
"scope": "Upload new HomeCamp B/C prop white-background design images (fence, awning stall, flower pots, rocks, steps, cypress, bushes and similar) and their derived model files to Hunyuan web/3D Studio for steps 01-03",
"authorizationText": "User selected: authorize uploading this batch of new prop component images",
"authorizedDate": "2026-10-28"
},
"uploadAuthorizationCottageV2": {
"status": "authorized_by_user",
"destination": "https://3d.hunyuan.tencent.com/",
"scope": "Upload cottage_v2 white-background design image and derived model files to Hunyuan web/3D Studio for steps 01-03",
"authorizationText": "User confirmed: 好补真侧屋",
"authorizedDate": "2026-10-28"
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB