项目简介

游戏建筑资产AI生成管线是一个基于Python和多模态大语言模型(VLM)的自动化工作流,能够将任意角度的建筑截图转换为游戏可用的45度等轴建筑组件。

项目背景

在游戏开发中,建筑资产制作是一项耗时的工作。传统流程需要美术人员手动绘制每个组件,效率低下。本项目利用AI技术,实现了从建筑照片到游戏资产的自动化转换,大幅提升了资产生产效率。

核心特性

  • 🏗️ 智能立面标准化:任意透视角度 → 正交正视图
  • 🔍 精确组件识别:VLM自动识别建筑组件(窗户、门、屋顶等)
  • 多阶段质检:代码规则 + VLM双重校验
  • 🎨 四宫格生成:2x2网格批量生成45度等轴视图
  • 🔧 靶向修复:智能识别并修复识别错误

技术架构

整体流程

┌─────────────────────────────────────────────────────────────────┐
│                    游戏建筑资产AI生成管线                         │
├─────────────────────────────────────────────────────────────────┤
│  Phase 1: 立面标准化                                             │
│    输入:任意透视建筑截图                                         │
│    输出:纯白背景正交正视图 + 建筑描述JSON                         │
├─────────────────────────────────────────────────────────────────┤
│  Phase 2: 组件识别                                               │
│    输入:正交图                                                   │
│    输出:组件清单 + 裁剪图 + 楼层区域图                            │
├─────────────────────────────────────────────────────────────────┤
│  Phase 2.5: VLM质检                                             │
│    输入:组件清单 + 正交图                                         │
│    输出:质量评分 + 问题清单                                       │
├─────────────────────────────────────────────────────────────────┤
│  Phase 2.6: 靶向修复                                             │
│    输入:质检报告 + 组件清单                                       │
│    输出:修复后的组件清单                                          │
├─────────────────────────────────────────────────────────────────┤
│  Phase 3: 四宫格生成                                             │
│    输入:组件清单 + 裁剪图                                         │
│    输出:2x2四宫格45度等轴视图                                    │
├─────────────────────────────────────────────────────────────────┤
│  Phase 4: 四宫格裁剪                                             │
│    输入:四宫格图片                                               │
│    输出:单个组件图片                                              │
└─────────────────────────────────────────────────────────────────┘

技术栈

类别 技术 用途
VLM Qwen3.5-Omni-Plus 图像分析、组件识别
图像生成 DALL-E 3 正交图生成
图像编辑 Qwen-Image-2.0-Pro 四宫格生成
质检VLM Gemini-3.1-Flash-Lite 质量检查
框架 Python + LangGraph 工作流编排

核心技术详解

1. Phase 1:立面标准化

将任意透视角度的建筑截图转换为正交正视图:

ANALYZE_PROMPT = """You are an expert architectural draftsman. Analyze this building screenshot and return a PRECISE geometric description in JSON format.

{
  "perspective_type": "one-point / two-point / three-point / front-view / bird-eye / unknown",
  "building_style": "architectural style in 2-3 words",
  "total_floors": "exact number of floors",
  "width_height_ratio": "approximate width:height ratio",
  "roof": { "type": "...", "color": "...", "details": "..." },
  "facade": { "material": "...", "main_color": "...", "accent_color": "..." },
  "windows": { "count_per_floor": "...", "arrangement": "...", "style": "..." },
  "door": { "position": "...", "style": "...", "color": "..." },
  "decorative_elements": ["list every visible decorative element"],
  ...
}"""

输出:纯白背景、无阴影的正面正视图 + 建筑描述JSON

2. Phase 2:组件识别

使用VLM识别建筑组件,输出结构化的组件清单:

识别的组件类型

  • roof / roof_slope:屋顶
  • facade:墙面面板
  • window:窗户
  • door:门
  • balcony:阳台
  • canopy:遮阳篷
  • shopfront:商铺橱窗
  • molding:装饰线脚
  • steps:台阶
  • chimney:烟囱
  • parapet:女儿墙

输出结构

{
  "components": [
    {
      "id": "comp_001",
      "type": "window",
      "bbox": [100, 200, 300, 400],
      "reusable_group": "window_standard",
      "generation_prompt": "单个白色木质窗户,45度等轴游戏建筑资产"
    }
  ],
  "reusable_groups": {
    "window_standard": {
      "count": 9,
      "representative": "comp_001",
      "all_instances": ["comp_001", "comp_002", ...]
    }
  },
  "floor_zones": [
    {
      "zone_id": 0,
      "type": "roof",
      "y_range": [0, 150],
      "components": ["comp_001"]
    }
  ]
}

3. Phase 2.5:VLM质检

使用独立的质检VLM对识别结果进行质量检查:

质检维度

  1. 完整性:是否有遗漏的组件
  2. 拆分精细度:是否有过度合并
  3. 分组合理性:reusable_group是否正确
  4. 类型正确性:组件类型标注是否准确

评分机制

  • 80分以上:Pass(通过)
  • 60-79分:Conditional_Pass(有条件通过)
  • 60分以下:Refine(需要修复)

4. Phase 2.6:靶向修复

基于质检报告,使用代码规则进行零成本修复:

# 拆分规则:合并过度的组件自动拆分
MERGE_SPLIT_RULES = {
    ("canopy", "shopfront"):  {"split": "horizontal", "ratio": 0.35},
    ("window", "balcony"):    {"split": "horizontal", "ratio": 0.75},
    ("window", "flower_box"): {"split": "horizontal", "ratio": 0.85},
}

# 关键词 → 组件类型映射
KEYWORD_TO_TYPE = {
    "遮阳篷": "canopy", "雨棚": "canopy",
    "橱窗": "shopfront", "商铺": "shopfront",
    "阳台": "balcony", "栏杆": "balcony",
    "花箱": "flower_box", "花台": "flower_box",
}

修复策略

  • merged_components:代码规则拆分(零VLM成本)
  • missing_components:标记警告
  • grouping_issues:标记警告(后续向量模型处理)
  • type_errors:标记警告

5. Phase 3:四宫格生成

将识别的组件生成2x2四宫格45度等轴视图:

PROMPT_TEMPLATE = """参考建筑立面图,生成2x2四宫格模块拆分正交视图。

【视角要求】
固定视角:每个组件都必须从"正面偏左侧45度"观察,看到正面和左侧两个面。
所有四个格子的视角方向完全一致,禁止出现朝右的组件。
等轴测投影,无透视变形。

【构图要求】
- 纯白背景
- 四个格子均匀分布,格子间有清晰分割线
- 组件居中展示,占格子85%以上空间

【四个组件】
{components}

【风格要求】
- 哥特风格游戏资产:干净边缘,扁平着色
- 组件结构完整,可独立作为模块使用
- 同一建筑风格,与参考图一致"""

6. Phase 4:四宫格裁剪

将四宫格图片裁剪为单个组件图片:

# 四宫格裁剪位置
CROP_POSITIONS = [
    (0, 0),  # 左上
    (1, 0),  # 右上
    (0, 1),  # 左下
    (1, 1),  # 右下
]

提示词优化实践

问题发现

在项目开发过程中,我们发现并解决了多个提示词问题:

问题 类别 解决方案
3m×3m网格规则VLM无法理解 规则设计 改用"按窗间墙自然分段"
"同种窗户只识别1个"与代码需求矛盾 规则冲突 改为"每个实例都单独识别"
未提供图片尺寸信息 信息缺失 动态注入图片尺寸
type列表不完整 类型覆盖 补充steps/canopy等类型
decoration类型太笼统 输出问题 细分为尖顶/壁灯/植物等

优化原则

  1. 可操作性:规则必须是VLM能理解和执行的
  2. 一致性:提示词和代码逻辑必须一致
  3. 完整性:提供所有必要的上下文信息
  4. 精确性:避免模糊和歧义的描述

使用指南

环境准备

# 克隆项目
git clone https://github.com/your-username/workflowTest.git

# 安装依赖
pip install -r requirements.txt

配置API

编辑 config.py

# VLM 视觉模型
VLM_API_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"
VLM_API_KEY = "your-api-key"
VLM_MODEL = "qwen3.5-omni-plus"

# 图像生成模型
IMAGE_GEN_API_URL = "https://api.302.ai/v1/images/generations"
IMAGE_GEN_API_KEY = "your-api-key"
IMAGE_GEN_MODEL = "dall-e-3"

# 图像编辑模型
IMAGE_EDIT_API_URL = "https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"
IMAGE_EDIT_API_KEY = "your-api-key"
IMAGE_EDIT_MODEL = "qwen-image-2.0-pro"

# 质检VLM
CHECKER_VLM_API_URL = "https://api.302.ai/v1/chat/completions"
CHECKER_VLM_API_KEY = "your-api-key"
CHECKER_VLM_MODEL = "gemini-3.1-flash-lite-preview"

运行流程

# Phase 1: 立面标准化
python phase1_standardize.py

# Phase 2: 组件识别
python phase2_module_recognition.py

# Phase 2.5: VLM质检
python phase25_quality_check.py

# Phase 2.6: 靶向修复(如果质检发现问题)
python phase26_calibration_repair.py

# Phase 3: 四宫格生成
python phase3_quadrant_generation.py

# Phase 4: 四宫格裁剪
python phase4_crop_quadrant.py

输出结构

output/
├── phase1/                    # 正交图 + 建筑描述
│   ├── building_001.png
│   └── building_001_analysis.json
├── phase2/                    # 组件清单 + 裁剪图
│   ├── manifest.json
│   └── components/
│       ├── comp_001_window.png
│       ├── comp_002_door.png
│       └── ...
├── phase25/                   # 质检报告
│   └── quality_report_01.json
├── phase3_quadrant/           # 四宫格图片
│   ├── batch_001.png
│   └── manifest.json
└── phase4_cropped/            # 单个组件图片
    ├── window_001.png
    ├── door_001.png
    └── ...

技术亮点

1. 多阶段质检机制

项目采用代码规则 + VLM双重质检:

  • 代码规则:检查bbox边界、字段完整性、数量合理性
  • VLM质检:视觉检查完整性、拆分精细度、分组合理性

2. 靶向修复策略

针对质检发现的问题,采用靶向修复而非全量重跑:

  • 代码可修复的问题:自动拆分、类型映射
  • 需要VLM的问题:标记警告,后续处理
  • 大幅降低API调用成本

3. 可复用组件分组

通过reusable_group机制,实现组件去重和批量生成:

  • 相同外观的组件归为一组
  • 只生成一次四宫格
  • 通过裁剪复用到多个位置

4. 动态提示词注入

根据图片尺寸、Phase 1描述等信息动态构建提示词:

  • 注入图片尺寸,提升bbox精度
  • 注入建筑描述,提升识别准确度
  • 注入已知组件,保持一致性

实际演示

演示案例:哥特风格建筑

以下展示一个完整的建筑资产生成流程,从输入截图到最终输出。

Step 1: 输入 - 建筑截图

在这里插入图片描述

Step 2: Phase 1 输出 - 正交正视图

输出说明:VLM分析建筑透视类型,生成纯白背景的正交正视图

在这里插入图片描述

生成的建筑描述JSON

{
  "perspective_type": "two-point",
  "building_style": "Gothic Revival",
  "total_floors": 3,
  "roof": { "type": "gable", "color": "dark gray" },
  "facade": { "material": "stone", "main_color": "beige" },
  "windows": { "count_per_floor": 4, "style": "arched" }
}

Step 3: Phase 2 输出 - 组件识别结果

输出说明:VLM识别建筑组件,标注bbox和类型

在这里插入图片描述

识别统计

组件类型 数量 示例
window 12 标准窗户、拱形窗户
door 1 正门
balcony 3 铁艺阳台
roof 1 人字屋顶
facade 4 墙面面板
canopy 2 遮阳篷
Step 4: Phase 2.5 输出 - 质检报告

输出说明:VLM对识别结果进行质量检查

质检评分:85/100 ✅ Pass

维度 评分 说明
完整性 90 所有主要组件已识别
拆分精细度 85 无过度合并
分组合理性 80 reusable_group划分正确
类型正确性 85 组件类型标注准确

发现的问题

  • ⚠️ comp_015: "decoration"类型过于笼统,可能是壁灯
  • ⚠️ comp_008: bbox与相邻组件有轻微重叠

Step 5: Phase 3 输出 - 四宫格生成

输出说明:将组件生成2x2四宫格45度等轴视图

在这里插入图片描述

四宫格说明

  • 视角:正面偏左侧45度,看到正面和左侧两个面
  • 背景:纯白
  • 风格:哥特风格游戏资产,干净边缘,扁平着色

Step 6: Phase 4 输出 - 单个组件

输出说明:将四宫格裁剪为单个组件图片

在这里插入图片描述
在这里插入图片描述

最终输出文件夹结构

output/phase4_cropped/
├── window_standard_001.png    # 标准窗户
├── window_arched_001.png      # 拱形窗户
├── door_main_001.png          # 正门
├── balcony_iron_001.png       # 铁艺阳台
├── canopy_shop_001.png        # 商铺遮阳篷
├── roof_gable_001.png         # 人字屋顶
└── facade_panel_001.png       # 墙面面板

效果对比

阶段 输入 输出 处理时间
Phase 1 透视截图 正交图 ~30秒
Phase 2 正交图 组件清单 ~45秒
Phase 2.5 组件清单 质检报告 ~15秒
Phase 3 组件图 四宫格 ~60秒/批
Phase 4 四宫格 单个组件 <1秒

总处理时间:约3-5分钟/建筑(取决于组件数量)


项目对比

特性 传统流程 AI管线
组件识别 人工标注 VLM自动识别
质量检查 人工审核 代码+VLM双重校验
资产生成 手动绘制 AI批量生成
处理时间 数小时/建筑 数分钟/建筑
一致性 依赖人工经验 规则化保证

未来规划

短期目标

  • 引入向量模型做组件校准
  • 优化Phase 2提示词(300行精简)
  • 支持更多建筑风格
  • 添加Web界面

长期目标

  • 支持3D模型生成
  • 集成ComfyUI工作流
  • 实现分布式处理
  • 开源社区建设
  • Agent化流程

总结

游戏建筑资产AI生成管线通过集成多模态大语言模型,实现了从建筑截图到游戏资产的自动化转换。项目的核心创新在于:

  1. 多阶段处理:标准化 → 识别 → 质检 → 修复 → 生成 → 裁剪
  2. 双重质检:代码规则 + VLM视觉检查
  3. 靶向修复:零成本代码修复 + 标记式警告
  4. 可复用分组:组件去重,批量生成

如果你对游戏资产制作、计算机视觉、或者AI工作流感兴趣,欢迎关注和交流!


项目地址:https://github.com/Lastcloud-AC/BuildingPix

相关技术:Python, VLM, DALL-E 3, Qwen, LangGraph, 计算机视觉

标签:#游戏开发 #AI #VLM #建筑资产 #自动化 #计算机视觉

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐