3D内容生成正在成为AIGC领域的新热点,无论是文本生成3D模型还是AI辅助建模,都离不开高质量的提示词。然而直接把需求丢给通用大语言模型,得到的往往是“一个红色的漂亮椅子”这类描述,缺少布线、材质、PBR贴图、拓扑等专业维度的信息,3D生成模型拿到这种提示词,输出质量自然大打折扣。问题的本质在于通用LLM的训练语料中,3D生产领域的专业知识占比极低,它并不清楚游戏资产管线对多边形数的要求,也不了解Substance风格的材质描述该怎么写。要让LLM输出真正可用的3D Prompt,需要在领域知识注入和提示词模板两个方向同时发力。

为什么通用LLM生成的3D Prompt不够专业
先看一个典型的失败案例。假设我们让LLM“帮我写一个中世纪铁砧的3D模型提示词”,常见输出大致是这样的:一个中世纪的铁砧,金属材质,黑色,带有细节,高质量,4K分辨率。这段话对文生图模型或许够用,但对3D生成流程来说信息量严重不足。它没有说明资产的用途(游戏道具、影视资产还是3D打印)、没有限定面数区间、没有描述PBR贴图通道(BaseColor、Normal、Roughness、Metallic)、也没有提及UV展开和贴图分辨率要求。
造成这种现象的原因主要有三个。第一,通用语料里关于3D生产的文本密度很低,LLM见过的多是产品介绍和教程片段,而不是资产交付规范这类结构化文档。第二,3D领域的术语体系本身存在多套标准,PBR工作流有金属度 roughness 流派和高光 光泽度流派,不同引擎(Unity、Unreal、Blender)对资产的要求各不相同,LLM缺乏明确的约束时只会输出最大公约数式的模糊描述。第三,用户提问时没有提供足够的上下文,LLM无法推断出这个资产是要进实时渲染管线还是走离线渲染,两者的提示词写法差异巨大。
理解了成因,解决思路也就清晰了:要么把领域知识喂给模型(知识注入),要么把专业结构固化在提示词框架里(模板工程),两者结合效果最好。
领域知识注入的三种落地方式
构建3D专业术语库并注入系统提示词
最轻量的方案是整理一份领域术语表和资产规范说明,作为System Prompt的一部分注入。术语库应包含:常见资产类型及其面数参考(如手游低模道具1k-5k面、主机游戏资产5k-30k面)、PBR贴图通道的标准命名、材质描述关键词(如拉丝金属、碳纤维、清漆层、次表面散射)、以及拓扑相关的专业表述(四边面优先、布线均匀、边缘倒角保留高光)。
一个可参考的System Prompt结构如下:
你是3D资产提示词专家。请遵循以下领域规范: 1. 资产用途分类:game_ready(低模+烘焙贴图)、cinematic(高模+细分曲面)、3d_print(封闭水密实体) 2. 面数区间参考:mobile 1k-5k tris,PC/console 5k-30k tris,hero asset 50k+ 3. 贴图要求必须明确通道:BaseColor/Metallic/Roughness/Normal/AO,分辨率指定为1024/2048/4096 4. 材质描述使用PBR物理术语,禁止使用"漂亮""精美"等主观词 5. 拓扑要求:quad-dominant,uv无重叠,贴图利用率高于80%
这种方式见效快、零成本,但受限于上下文窗口长度,术语库不能无限膨胀。当规范文档超过一万字时,建议改用RAG方案。
用RAG检索增强接入资产规范文档
如果团队内部已有详细的资产制作规范、风格指南或者历史项目的优质Prompt库,把这些文档向量化后接入检索,是更可持续的方案。工作流程是:用户提出需求后,系统先从知识库中检索相关的规范片段(比如检索到“道具类资产需提交USD和FBX双格式,贴图为PNG且命名符合suffix规范”),再把这些片段与用户需求拼装成最终提示词交给LLM生成。
用LangChain搭建的原型代码可以这样写:
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# 加载已经向量化的3D规范知识库
vectorstore = FAISS.load_local("kb_3d_spec", OpenAIEmbeddings(), allow_dangerous_deserialization=True)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
prompt = ChatPromptTemplate.from_messages([
("system", "你是3D资产提示词专家,严格依据以下规范生成提示词:\n{context}"),
("human", "{query}")
])
llm = ChatOpenAI(model="gpt-4o", temperature=0.3)
chain = prompt | llm
def gen_3d_prompt(user_need: str) -> str:
docs = retriever.invoke(user_need)
context = "\n---\n".join(d.page_content for d in docs)
return chain.invoke({"context": context, "query": user_need}).contentRAG的优势在于知识库可以持续更新,新项目的规范随时入库;缺点是检索质量依赖文档切分策略,切得太碎会丢失上下文,切得太粗又可能召回无关内容,需要反复调优chunk_size和重叠比例。
微调:当精度要求足够高时的选择
如果积累了成百上千条“优质Prompt-资产验收结果”的配对数据,LoRA微调是值得投入的方向。微调后的模型会把领域风格内化到参数里,不再依赖冗长的System Prompt,推理成本更低、稳定性更好。数据准备上建议格式统一为JSON,包含资产描述、用途标签、面数约束、贴图规格、材质关键词等字段。不过微调有数据量门槛,样本低于几百条时效果通常不如前两种方案,中小团队优先考虑System Prompt加RAG的组合即可。
结构化提示词模板的设计与实战
五段式3D Prompt模板
知识注入解决的是模型“懂不懂”的问题,模板解决的是输出“稳不稳”的问题。经过验证的五段式模板把一段3D Prompt拆解为:资产主体、几何与拓扑、材质与贴图、技术规格、风格约束。这五个维度覆盖了3D生成模型和下游管线关心的全部核心信息。
模板的文本形式如下:
[资产主体] a medieval blacksmith anvil, single object, centered [几何与拓扑] quad-dominant topology, clean edge flow, chamfered edges, tris under 8k [材质与贴图] forged iron base with scratches and soot, PBR texture set: BaseColor/Metallic/Roughness/Normal/AO at 2048, hand-painted style weathering [技术规格] game ready, UV unwrapped non-overlapping, texture utilization > 80%, pivot at base center, exported as FBX and glTF [风格约束] stylized realism, consistent with fantasy RPG art direction
让LLM填充这个模板时,务必在指令末尾加上输出约束,比如“严格按五个分段输出,每段不可为空,材质描述必须使用PBR物理术语”。加上约束后,输出的格式一致性会显著提升,方便后续用正则或解析器提取字段,直接对接自动化生产管线。
面向不同生成模型的模板变体
不同3D生成模型对提示词的偏好差异很大,模板需要相应调整。面向Meshy、Tripo这类文生3D服务时,提示词应侧重主体描述和风格词,技术规格段可以精简,因为这些平台会自动处理拓扑和贴图;面向Blender脚本生成或程序化建模时,提示词需要进一步结构化为参数化指令,甚至直接让LLM输出Python调用bpy的代码。下面是让LLM生成Blender脚本的指令模板:
import bpy
# LLM根据结构化提示词生成的建模脚本片段
bpy.ops.mesh.primitive_cube_add(size=1.2, location=(0, 0, 0.6))
anvil = bpy.context.active_object
anvil.name = "Anvil_Base"
# 使用修改器添加倒角,保留边缘高光
bevel = anvil.modifiers.new(name="Bevel", type='BEVEL')
bevel.width = 0.02
bevel.segments = 3
# 平滑着色并应用资产命名规范
bpy.ops.object.shade_smooth()
print("资产生成完成,命名符合 pipeline 规范")实测下来,把模板与领域System Prompt组合使用,生成一次性通过人工审核的提示词比例能从三成左右提升到八成以上,返工成本大幅下降。值得注意的是,模板不要设计得过于死板,保留一到两个可选字段让LLM发挥创意空间,效果反而更好。
常见坑点与效果评估
落地过程中有几个高频坑需要提醒。一是术语库与目标引擎不匹配,比如术语库写的是Metallic/Roughness工作流,而项目实际用Specular工作流,生成的提示词会直接误导材质制作环节,知识库必须与当前项目管线保持同步。二是温度参数设置过高,3D Prompt追求确定性,temperature建议控制在0.2到0.4之间,否则同一需求每次生成的面数和贴图规格都会漂移。三是忽略了负面提示词,对于支持负向输入的生成服务,把low poly artifacts、floating geometry、texture seams这类描述加入negative prompt,能有效规避常见的生成缺陷。
效果评估建议建立一个小型测试集,选取二三十个典型资产需求,固定人工评审标准(信息完整性、术语准确性、管线合规性三个维度各打分),每次调整术语库或模板后跑一轮对比。同时留意Token消耗:System Prompt过长的方案在批量生成场景下成本会快速上升,此时应优先把高频规范沉淀进模板本身,而不是全部塞进System Prompt。持续迭代一两个月后,通常会收敛出一套团队专属的、与自身管线深度绑定的提示词体系,这才是解决“不专业”问题的根本答案。