带你读《2022技术人的百宝黑皮书》——3D技术在数字藏品中的应用(6) https://developer.aliyun.com/article/1248009?groupCode=taobaotech
zip上传到平台,获取modelCode
这部分的操作可以直接参考:https://www.yuque.com/mmdkz9/kzu1iw/znxr3h#8P29y
脚本操作
整体的思路比较清晰,找到对应 nam 的 GameObject,然后修改GameObject 材质等基本数据,设计的 API 如下:
interface GameObjectInfo { /** * 贴图url,淘内地址 */ img?: string; /** * gameObject 颜色 */ color?: string; /** * 材质是否需要反光 */ isShine?: boolean; } interface setGameObjectInfo { /** * 针对模型或者模型中sku的某一个面进行贴图设置 */ (midOrSkuName: string, data: Record<string, GameObjectInfo>,): Promise<void>; } }); }); return await Promise.all(texList);
通过mid找到对应的GameObject
private async udpateNodeMaterial(imgGo: Node, option: {img?: string; color?: string; isShine?: boolean}) { const { img, color, isShine = true } = option; const imgRender = imgGo.getComponent(MeshRenderer); const material = isShine ? new LitMaterial() : new UnlitMaterial(); imgRender.materials.clear(); imgRender.materials.add(material); if (color) { material.color.set(color); } if (img) { material.offset.set(0, 1); material.scale.set(1, -1); const tex = await this._assetManager.loadAsync(Texture2D, '', img); tex.samplerFlags |= SamplerFlags.MinAnisotropic | SamplerFlags.MagAnisotropic; material.texAlbedo = tex;
带你读《2022技术人的百宝黑皮书》——3D技术在数字藏品中的应用(8) https://developer.aliyun.com/article/1248007?groupCode=taobaotech