Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
0cbef7678d | |||
7484cc6c3c | |||
942c7f1cc7 | |||
10d5595fb6 |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "material-editor",
|
||||
"private": true,
|
||||
"version": "1.0.17",
|
||||
"version": "1.0.23",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
@@ -36,10 +36,11 @@ export class MaterialRenderer
|
||||
var ambient = new AmbientLight();
|
||||
this.scene.add(ambient);
|
||||
|
||||
//Pontual light
|
||||
var point = new PointLight();
|
||||
point.position.set(-0.5, 1, 1.5);
|
||||
this.scene.add(point);
|
||||
// 这个点光源会导致生成的缩略图上有一个高光
|
||||
// //Pontual light
|
||||
// var point = new PointLight();
|
||||
// point.position.set(-0.5, 1, 1.5);
|
||||
// this.scene.add(point);
|
||||
}
|
||||
|
||||
//Set render size
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { CADFiler, CADObject, Database, DuplicateRecordCloning, Factory, LayerNode, ObjectId, PhysicalMaterialRecord, TextureTableRecord } from "webcad_ue4_api";
|
||||
import { CADFactory, CADFiler, CADObject, Database, DuplicateRecordCloning, Factory, LayerNode, ObjectId, PhysicalMaterialRecord, TextureTableRecord } from "webcad_ue4_api";
|
||||
|
||||
// TODO: Danger: 注意入侵性代码
|
||||
// 疑似是WebCAD中的漏洞,当传入new Database()时,
|
||||
@@ -14,8 +14,7 @@ Database.prototype.AllocationObjectId = function (this: Database, object: CADObj
|
||||
this.idMap.set(object.Id.Index, object.Id);
|
||||
}
|
||||
|
||||
export function MaterialOut(material: PhysicalMaterialRecord): string
|
||||
{
|
||||
export function MaterialOut(material: PhysicalMaterialRecord): string {
|
||||
let db = new Database();
|
||||
db.WblockCloneObejcts(
|
||||
[material],
|
||||
@@ -28,6 +27,8 @@ export function MaterialOut(material: PhysicalMaterialRecord): string
|
||||
json = json.replace(LayerNode.name, "LayerNode")
|
||||
.replace(TextureTableRecord.name, "TextureTableRecord")
|
||||
.replace(PhysicalMaterialRecord.name, "PhysicalMaterialRecord");
|
||||
console.debug("DEBUG CAD Object Name", CADFactory['factory'].objectNameMap);
|
||||
console.debug("CURRENT PROTOTYPE NAME\n", "LAYERNODE:", LayerNode.name, "TEXTURETABLERECORD:", TextureTableRecord.name, "PHYSICALMATERIALRECORD:", PhysicalMaterialRecord.name);
|
||||
return json;
|
||||
}
|
||||
|
||||
|
@@ -16,6 +16,7 @@
|
||||
<CfFlex gap="1em" v-if="debugMode">
|
||||
<button class="btn-success" style="min-width: 110px;" @click="HandleUpload">保存</button>
|
||||
<button class="btn-danger" style="min-width: 110px;" @click="HandleCancel">取消</button>
|
||||
<button v-if="debugMode" class="btn-primary" style="min-width: 110px;" @click="HandleGenerateLogo">预览缩略图</button>
|
||||
</CfFlex>
|
||||
</div>
|
||||
|
||||
@@ -108,13 +109,14 @@
|
||||
</template>
|
||||
|
||||
<script setup lang='ts'>
|
||||
import { ref, reactive, watch } from "vue"
|
||||
import { ref, reactive, watch, computed } from "vue"
|
||||
import { useScene, type TextureAdjustment } from "../stores/sceneStore";
|
||||
import CfFlex from "./CfFlex.vue";
|
||||
import { DirectoryId } from "../api/Request";
|
||||
import { IsNullOrWhitespace } from "../helpers/helper.string";
|
||||
import { FromDeflateBase64, ToDeflatedBase64 } from "../helpers/helper.material";
|
||||
import { storeToRefs } from "pinia";
|
||||
import { DownloadFile } from "../helpers/helper.web";
|
||||
|
||||
export interface MaterialRequest {
|
||||
/** 材质名 */
|
||||
@@ -139,7 +141,7 @@ const emits = defineEmits<{
|
||||
(e: 'submit', data: MaterialRequest[]): void;
|
||||
}>();
|
||||
|
||||
const debugMode = ref(true);
|
||||
const debugMode = ref(false);
|
||||
const _textureSrc = ref(props.textureSrcList);
|
||||
const debugTextureSrc = ref("");
|
||||
const textureAdjustment = ref<TextureAdjustment>({
|
||||
@@ -169,6 +171,10 @@ watch(() => props.textureSrcList, async (val) => {
|
||||
await scene.ChangeTextureFromUrlAsync(_textureSrc.value[0]);
|
||||
});
|
||||
|
||||
watch(() => props.name, () => {
|
||||
materialInfo.materialName = props.name || '材质';
|
||||
});
|
||||
|
||||
watch(textureAdjustment, async (val) => {
|
||||
UpdateTexture();
|
||||
}, { deep: true });
|
||||
@@ -269,6 +275,11 @@ function HandleCancel() {
|
||||
emits('cancel');
|
||||
}
|
||||
|
||||
async function HandleGenerateLogo() {
|
||||
const blob = await scene.GenerateMaterialLogoAsync();
|
||||
DownloadFile("logo.png", blob);
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
Upload: HandleUpload,
|
||||
Cancel: HandleCancel
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { computed, ref } from "vue";
|
||||
import { MaterialEditor } from "../common/MaterialEditor";
|
||||
import { Database, ObjectId, PhysicalMaterialRecord, TextureTableRecord } from "webcad_ue4_api";
|
||||
import { Database, PhysicalMaterialRecord, TextureTableRecord } from "webcad_ue4_api";
|
||||
import { LoadImageFromUrl } from "../helpers/helper.imageLoader";
|
||||
import { Texture } from "three";
|
||||
import { materialRenderer } from "../common/MaterialRenderer";
|
||||
|
@@ -9,12 +9,19 @@ const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||
// https://vite.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [vue(), dts({rollupTypes: true, tsconfigPath: './tsconfig.app.json',insertTypesEntry: true})],
|
||||
define: { 'process.env.NODE_ENV': '"production"' },
|
||||
resolve: {
|
||||
alias: {
|
||||
// 'vue': path.resolve(__dirname, './node_modules/vue/dist/vue.esm-browser.prod.js'),
|
||||
// 'pinia': path.resolve(__dirname, './node_modules/pinia/dist/pinia.esm-browser.js'),
|
||||
}
|
||||
},
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'src/lib/index.ts'),
|
||||
name: 'MaterialEditor',
|
||||
fileName: (format) => `material-editor.${format}.js`,
|
||||
formats: ['es']
|
||||
formats: ['es', 'iife', 'umd']
|
||||
},
|
||||
rollupOptions: {
|
||||
// external: ['vue'],
|
||||
|
Reference in New Issue
Block a user