This commit is contained in:
2026-05-18 12:28:10 +08:00
parent fdc031673f
commit fb193c0528
4 changed files with 55 additions and 20 deletions

View File

@ -129017,7 +129017,7 @@ discard;}}
* @param modelId 模型ID
*/
cloneMaterials(meshes, modelId) {
const scene = this.mainApp.appScene.object;
this.mainApp.appScene.object;
const clonedMaterials = /* @__PURE__ */ new Map();
meshes.forEach((mesh) => {
if (mesh.material) {
@ -129027,15 +129027,10 @@ discard;}}
const newName = `${originalName}_${modelId}`;
const clonedMaterial = originalMaterial.clone(newName);
clonedMaterials.set(originalName, clonedMaterial);
console.log(`[cloneMaterials] 克隆材质: ${originalName} -> ${newName}`);
console.log(`[cloneMaterials] 克隆后的材质名称: ${clonedMaterial.name}`);
console.log(`[cloneMaterials] 材质是否在场景中:`, scene.materials.includes(clonedMaterial));
}
mesh.material = clonedMaterials.get(originalName);
}
});
console.log(`已为模型 ${modelId} 克隆 ${clonedMaterials.size} 个材质`);
console.log(`[cloneMaterials] 场景中的所有材质:`, scene.materials.map((m) => m.name));
}
/** 为网格设置阴影(投射和接收) */
createModelRoot(modelId, meshes) {
@ -129226,7 +129221,6 @@ discard;}}
* @returns 模型名称未找到返回 undefined
*/
findModelNameByMesh(mesh) {
console.log(111111111111);
const keys = this.modelDic.Keys();
for (const key of keys) {
const meshes = this.modelDic.Get(key);
@ -129269,7 +129263,6 @@ discard;}}
* @param modelConfig 模型配置对象
*/
async replaceModel(modelConfig) {
console.log(modelConfig.modelId, this.modelDic);
this.removeByName(modelConfig.modelId);
return await this.addSingle(
modelConfig.modelId,
@ -129293,7 +129286,6 @@ discard;}}
this.modelDic.Remove(modelName);
this.modelMetadataDic.Remove(modelName);
this.mainApp.gameManager?.updateDictionaries();
console.log(`Model removed: ${modelName}`);
}
/**
* 清除所有已添加的模型并释放内存
@ -129301,7 +129293,6 @@ discard;}}
*/
removeAll() {
const modelNames = this.modelDic.Keys();
console.log(`开始清除所有模型,共 ${modelNames.length} 个模型`);
modelNames.forEach((modelName) => {
const meshes = this.modelDic.Get(modelName);
if (meshes?.length) {
@ -129459,6 +129450,14 @@ discard;}}
}
});
}
/**
* 检查模型是否存在
* @param modelId 模型ID
* @returns 模型是否存在
*/
exists(modelId) {
return this.modelDic.Has(modelId);
}
/**
* 应用 transform 到模型
* @param modelId 模型ID
@ -355223,7 +355222,6 @@ clipPos=viewProjection*worldPos;previousClipPos=previousViewProjection*previousW
}
this.updateDictionaries();
this.cacheRollerDoorMeshes();
console.log("材质字典:", this.materialDic);
this.setRollerDoorScale("Box006.001", new Vector3(0.12, 0.02, 0.118));
this.setRollerDoorScale("Box005.001", new Vector3(0.13, 0.02, 0.12));
}
@ -355749,8 +355747,6 @@ clipPos=viewProjection*worldPos;previousClipPos=previousViewProjection*previousW
*/
applyMaterial(options) {
this.updateDictionaries();
console.log("[applyMaterial] 查找材质:", options.target);
console.log("[applyMaterial] 当前所有材质:", this.materialDic.Values().map((m) => m.name));
const targetMaterials = [];
this.materialDic.Values().forEach((material) => {
if (material.name === options.target || material.name.startsWith(`${options.target}_`)) {
@ -355761,7 +355757,6 @@ clipPos=viewProjection*worldPos;previousClipPos=previousViewProjection*previousW
console.warn(`Material not found: ${options.target}`);
return;
}
console.log("[applyMaterial] 找到材质:", targetMaterials.map((m) => m.name));
targetMaterials.forEach((material) => {
if (options.albedoColor) {
const color = Color3.FromHexString(options.albedoColor);
@ -355784,7 +355779,6 @@ clipPos=viewProjection*worldPos;previousClipPos=previousViewProjection*previousW
}
material.markDirty();
});
console.log(`Material applied to ${targetMaterials.length} material(s): ${options.target}`, options);
}
}