修复更新材质时纹理贴图不显示的问题
This commit is contained in:
		@@ -1,7 +1,7 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "material-editor",
 | 
					  "name": "material-editor",
 | 
				
			||||||
  "private": true,
 | 
					  "private": true,
 | 
				
			||||||
  "version": "1.0.33",
 | 
					  "version": "1.0.34",
 | 
				
			||||||
  "type": "module",
 | 
					  "type": "module",
 | 
				
			||||||
  "scripts": {
 | 
					  "scripts": {
 | 
				
			||||||
    "dev": "vite",
 | 
					    "dev": "vite",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@
 | 
				
			|||||||
                <legend>DEBUG</legend>
 | 
					                <legend>DEBUG</legend>
 | 
				
			||||||
                <label>上传路径ID</label>
 | 
					                <label>上传路径ID</label>
 | 
				
			||||||
                <input v-model="materialInfo.dirId" type="text" placeholder="材质路径ID" />
 | 
					                <input v-model="materialInfo.dirId" type="text" placeholder="材质路径ID" />
 | 
				
			||||||
                <label>配置JSON</label>
 | 
					                <label>纹理(BASE64)</label>
 | 
				
			||||||
                <input v-model="materialInfo.inputText" type="text" />
 | 
					                <input v-model="materialInfo.inputText" type="text" />
 | 
				
			||||||
                <button class="btn-success" style="min-width: 110px;" @click="loadData">加载</button>
 | 
					                <button class="btn-success" style="min-width: 110px;" @click="loadData">加载</button>
 | 
				
			||||||
            </fieldset>
 | 
					            </fieldset>
 | 
				
			||||||
@@ -247,8 +247,7 @@ async function UpdateMaterial() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
async function loadData() {
 | 
					async function loadData() {
 | 
				
			||||||
    if (!materialInfo.inputText) return;
 | 
					    if (!materialInfo.inputText) return;
 | 
				
			||||||
    const json = JSON.parse(materialInfo.inputText);
 | 
					    const cadFile = FromDeflateBase64(materialInfo.inputText);
 | 
				
			||||||
    const cadFile = FromDeflateBase64(json.file);
 | 
					 | 
				
			||||||
    scene.ImportMaterialAsync(cadFile)
 | 
					    scene.ImportMaterialAsync(cadFile)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -99,7 +99,6 @@ const sceneSetup = () => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async function ChangeTextureFromUrlAsync(url?: string) {
 | 
					    async function ChangeTextureFromUrlAsync(url?: string) {
 | 
				
			||||||
        console.warn("Update texture from url:", url);
 | 
					 | 
				
			||||||
        // 关联贴图
 | 
					        // 关联贴图
 | 
				
			||||||
        const db = Material.value.Db;
 | 
					        const db = Material.value.Db;
 | 
				
			||||||
        // 材质未初始化
 | 
					        // 材质未初始化
 | 
				
			||||||
@@ -108,11 +107,15 @@ const sceneSetup = () => {
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const record = new TextureTableRecord();
 | 
					        // 如果url为空,则保留原有材质中的纹理(修改模式),否则重新实例化纹理对象
 | 
				
			||||||
 | 
					        let record = Material.value.map?.Object as TextureTableRecord;
 | 
				
			||||||
 | 
					        if (url) {
 | 
				
			||||||
 | 
					            record = new TextureTableRecord();
 | 
				
			||||||
            record.Name = db.TextureTable.AllocateName();
 | 
					            record.Name = db.TextureTable.AllocateName();
 | 
				
			||||||
            db.TextureTable.Add(record);
 | 
					            db.TextureTable.Add(record);
 | 
				
			||||||
            // 替换map
 | 
					            // 替换map
 | 
				
			||||||
            Material.value.map = record.Id;
 | 
					            Material.value.map = record.Id;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 设置Store
 | 
					        // 设置Store
 | 
				
			||||||
        _currTexture.value = record;
 | 
					        _currTexture.value = record;
 | 
				
			||||||
@@ -123,6 +126,7 @@ const sceneSetup = () => {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!texture.image) {
 | 
					        if (!texture.image) {
 | 
				
			||||||
 | 
					            console.warn('Load Image: ', GetConfig().host + '/' + record.imageUrl);
 | 
				
			||||||
            const img = await LoadImageFromUrl(GetConfig().host + '/' + record.imageUrl);
 | 
					            const img = await LoadImageFromUrl(GetConfig().host + '/' + record.imageUrl);
 | 
				
			||||||
            texture.image = img;
 | 
					            texture.image = img;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user