This commit is contained in:
2026-05-20 11:26:47 +08:00
parent 127100d27b
commit 8dc9371cc5
7 changed files with 192 additions and 358647 deletions

View File

@ -787,9 +787,11 @@ export class GameManager extends Monobehiver {
}
});
} else {
// 没有提供 modelId全局查找保持向后兼容
this.materialDic.Values().forEach(material => {
if (material.name === options.target || material.name.startsWith(`${options.target}_`)) {
console.log(material.name);
targetMaterials.push(material);
}
});
@ -799,7 +801,7 @@ export class GameManager extends Monobehiver {
console.warn(`Material not found: ${options.target}${options.modelId ? ` in model ${options.modelId}` : ''}`);
return;
}
console.log(options);
// 应用材质属性到目标材质
targetMaterials.forEach(material => {
// 应用颜色
@ -818,36 +820,37 @@ export class GameManager extends Monobehiver {
}
}
// 应用法线贴图
if (options.normalMap !== undefined) {
if (options.normalMap) {
material.bumpTexture = new Texture(options.normalMap);
} else {
// 传入空字符串或 null 时清空贴图
material.bumpTexture = null;
}
}
// // 应用法线贴图
// if (options.normalMap !== undefined) {
// if (options.normalMap) {
// material.bumpTexture = new Texture(options.normalMap);
// } else {
// // 传入空字符串或 null 时清空贴图
// material.bumpTexture = null;
// }
// }
// 应用金属度贴图
if (options.metallicTexture !== undefined) {
if (options.metallicTexture) {
material.metallicTexture = new Texture(options.metallicTexture);
} else {
// 传入空字符串或 null 时清空贴图
material.metallicTexture = null;
}
}
// // 应用金属度贴图
// if (options.metallicTexture !== undefined) {
// if (options.metallicTexture) {
// material.metallicTexture = new Texture(options.metallicTexture);
// } else {
// // 传入空字符串或 null 时清空贴图
// material.metallicTexture = null;
// }
// }
// 应用粗糙度值
if (options.roughness !== undefined) {
material.roughness = options.roughness;
}
// 应用金属度值
if (options.metallic !== undefined) {
material.metallic = options.metallic;
}
// if (options.roughness !== undefined) {
// material.roughness = options.roughness;
// }
// // 应用金属度值
// if (options.metallic !== undefined) {
// material.metallic = options.metallic;
// }
// alert(typeof options.metallic + ' ' + typeof options.roughness);
// 强制刷新材质
material.markDirty();
});

69
src/skuMapping.js Normal file
View File

@ -0,0 +1,69 @@
/**
* SKU 映射管理模块
* 用于维护模型ID与SKU之间的映射关系
*/
// 存储模型ID到SKU的映射
const modelIdToSkuMap = new Map();
/**
* 记录模型ID与SKU的映射关系
* @param {string} modelId - 模型ID
* @param {string} sku - SKU编码
*/
export const setSkuMapping = (modelId, sku) => {
if (!modelId || !sku) {
console.warn('modelId 和 sku 不能为空');
return;
}
modelIdToSkuMap.set(modelId, sku);
console.log(`已记录映射: ${modelId} -> ${sku}`);
};
/**
* 根据模型ID获取关联的SKU
* @param {string} modelId - 模型ID
* @returns {string|undefined} SKU编码未找到返回 undefined
*/
export const getSkuByModelId = (modelId) => {
return modelIdToSkuMap.get(modelId);
};
/**
* 清除指定模型ID的SKU映射
* @param {string} modelId - 模型ID
* @returns {boolean} 是否成功删除
*/
export const clearSkuMapping = (modelId) => {
const deleted = modelIdToSkuMap.delete(modelId);
if (deleted) {
console.log(`已清除映射: ${modelId}`);
}
return deleted;
};
/**
* 清除所有SKU映射
*/
export const clearAllSkuMappings = () => {
const count = modelIdToSkuMap.size;
modelIdToSkuMap.clear();
console.log(`已清除所有映射,共 ${count}`);
};
/**
* 获取所有映射关系(用于调试)
* @returns {Object} 映射关系对象
*/
export const getAllMappings = () => {
return Object.fromEntries(modelIdToSkuMap);
};
/**
* 检查模型ID是否有映射
* @param {string} modelId - 模型ID
* @returns {boolean} 是否存在映射
*/
export const hasSkuMapping = (modelId) => {
return modelIdToSkuMap.has(modelId);
};