|
|
|
@ -1,10 +1,12 @@
|
|
|
|
|
import { Intent } from "@blueprintjs/core";
|
|
|
|
|
import { action, autorun, observable, toJS } from "mobx";
|
|
|
|
|
import { Color } from "three";
|
|
|
|
|
import { end } from "xaop";
|
|
|
|
|
import { ConverMaterialData } from "../../Add-on/ExportData";
|
|
|
|
|
import { app } from "../../ApplicationServices/Application";
|
|
|
|
|
import { Singleton } from "../../Common/Singleton";
|
|
|
|
|
import { UpdateDraw } from "../../Common/Status";
|
|
|
|
|
import { MaterialType } from "../../DatabaseServices/IMaterialDefaultParam";
|
|
|
|
|
import { IGoodProps, PhysicalMaterialRecord } from "../../DatabaseServices/PhysicalMaterialRecord";
|
|
|
|
|
import { TextureTableRecord } from "../../DatabaseServices/Texture";
|
|
|
|
|
import { MaterialEditor } from "../../Editor/MaterialEditor";
|
|
|
|
@ -23,6 +25,13 @@ export class MaterialStore extends Singleton
|
|
|
|
|
|
|
|
|
|
matalness = observable.box(0.2);
|
|
|
|
|
|
|
|
|
|
// 基础色
|
|
|
|
|
baseColorLuminance = observable.box(0);
|
|
|
|
|
baseColorLightColor = observable.box(new Color(0.5, 0.5, 0.5));
|
|
|
|
|
baseColorDarkColor = observable.box(new Color(0, 0, 0));
|
|
|
|
|
baseColorSaturability = observable.box(1);
|
|
|
|
|
|
|
|
|
|
materialType = observable.box<MaterialType>("木纹");
|
|
|
|
|
useTransparent = observable.box(false);
|
|
|
|
|
transparent = observable.box(0);
|
|
|
|
|
|
|
|
|
@ -30,8 +39,24 @@ export class MaterialStore extends Singleton
|
|
|
|
|
bumpScale = observable.box(0);
|
|
|
|
|
bumpMaping = new TextureStore();
|
|
|
|
|
roughness = observable.box(0);
|
|
|
|
|
specular = observable.box(0);
|
|
|
|
|
roughnessMaping = new TextureStore();
|
|
|
|
|
|
|
|
|
|
// 菲涅尔
|
|
|
|
|
fresnelPO = observable.box(1);
|
|
|
|
|
fresnelST = observable.box(1);
|
|
|
|
|
fresnelLuminance = observable.box(1);
|
|
|
|
|
fresnelLightColor = observable.box(new Color(1, 1, 1));
|
|
|
|
|
fresnelDarkColor = observable.box(new Color(1, 1, 1));
|
|
|
|
|
|
|
|
|
|
// 不透明度
|
|
|
|
|
opacityContrast = observable.box(1);
|
|
|
|
|
opacityBorder = observable.box(1);
|
|
|
|
|
opacityMaximum = observable.box(1);
|
|
|
|
|
opacityMinimum = observable.box(0.3);
|
|
|
|
|
|
|
|
|
|
protected reactionDestroy;
|
|
|
|
|
@observable coordinate = "0";
|
|
|
|
|
@observable isOpenTexture = false;
|
|
|
|
|
@observable isOpenImgList = false;
|
|
|
|
|
@observable goodsInfo: IGoodProps = {
|
|
|
|
@ -75,10 +100,25 @@ export class MaterialStore extends Singleton
|
|
|
|
|
{
|
|
|
|
|
this.name.get();
|
|
|
|
|
this.color.get();
|
|
|
|
|
this.baseColorLuminance.get();
|
|
|
|
|
this.baseColorLightColor.get();
|
|
|
|
|
this.baseColorDarkColor.get();
|
|
|
|
|
this.baseColorSaturability.get();
|
|
|
|
|
this.materialType.get();
|
|
|
|
|
this.useTransparent.get();
|
|
|
|
|
this.transparent.get();
|
|
|
|
|
this.bumpScale.get();
|
|
|
|
|
this.roughness.get();
|
|
|
|
|
this.specular.get();
|
|
|
|
|
this.fresnelPO.get();
|
|
|
|
|
this.fresnelST.get();
|
|
|
|
|
this.fresnelLuminance.get();
|
|
|
|
|
this.fresnelLightColor.get();
|
|
|
|
|
this.fresnelDarkColor.get();
|
|
|
|
|
this.opacityContrast.get();
|
|
|
|
|
this.opacityBorder.get();
|
|
|
|
|
this.opacityMaximum.get();
|
|
|
|
|
this.opacityMinimum.get();
|
|
|
|
|
if (this.Material)
|
|
|
|
|
this.UpdateMaterial();
|
|
|
|
|
});
|
|
|
|
@ -136,13 +176,6 @@ export class MaterialStore extends Singleton
|
|
|
|
|
this.Material.map = this.textureMaping.textureId;
|
|
|
|
|
this.Material.bumpMap = this.bumpMaping.textureId;
|
|
|
|
|
this.Material.roughnessMap = this.roughnessMaping.textureId;
|
|
|
|
|
|
|
|
|
|
//同步到效果图
|
|
|
|
|
if (userConfig.synchronousEnable)
|
|
|
|
|
{
|
|
|
|
|
let d: IncrementData = { Add: { Entitys: [], Materials: [] }, Change: { Entitys: [], Materials: [ConverMaterialData(this.Material)] }, Delete: { Entitys: [], Materials: [] } };
|
|
|
|
|
app.WebSocket.Send(JSON.stringify(d));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
UpdateMaterial = async () =>
|
|
|
|
|
{
|
|
|
|
@ -150,11 +183,26 @@ export class MaterialStore extends Singleton
|
|
|
|
|
{
|
|
|
|
|
this.Material.Name = this.name.get();
|
|
|
|
|
this.Material.color = this.color.get();
|
|
|
|
|
this.Material.baseColorLuminance = this.baseColorLuminance.get();
|
|
|
|
|
this.Material.baseColorLightColor = this.baseColorLightColor.get();
|
|
|
|
|
this.Material.baseColorDarkColor = this.baseColorDarkColor.get();
|
|
|
|
|
this.Material.baseColorSaturability = this.baseColorSaturability.get();
|
|
|
|
|
this.Material.type = this.materialType.get() as MaterialType;
|
|
|
|
|
this.Material.transparent = this.useTransparent.get();
|
|
|
|
|
this.Material.matalness = this.matalness.get();
|
|
|
|
|
this.Material.opacity = 1 - this.transparent.get();
|
|
|
|
|
this.Material.bumpScale = this.bumpScale.get();
|
|
|
|
|
this.Material.roughness = this.roughness.get();
|
|
|
|
|
this.Material.specular = this.specular.get();
|
|
|
|
|
this.Material.fresnelPO = this.fresnelPO.get();
|
|
|
|
|
this.Material.fresnelST = this.fresnelST.get();
|
|
|
|
|
this.Material.fresnelLuminance = this.fresnelLuminance.get();
|
|
|
|
|
this.Material.fresnelLightColor = this.fresnelLightColor.get();
|
|
|
|
|
this.Material.fresnelDarkColor = this.fresnelDarkColor.get();
|
|
|
|
|
this.Material.opacityContrast = this.opacityContrast.get();
|
|
|
|
|
this.Material.opacityBorder = this.opacityBorder.get();
|
|
|
|
|
this.Material.opacityMaximum = this.opacityMaximum.get();
|
|
|
|
|
this.Material.opacityMinimum = this.opacityMinimum.get();
|
|
|
|
|
this.Material.useMap = this.textureMaping.use.get();
|
|
|
|
|
this.Material.useBumpMap = this.bumpMaping.use.get();
|
|
|
|
|
this.Material.useRoughnessMap = this.roughnessMaping.use.get();
|
|
|
|
@ -168,6 +216,13 @@ export class MaterialStore extends Singleton
|
|
|
|
|
|
|
|
|
|
await this.Material.Update();
|
|
|
|
|
await (MaterialEditor.GetInstance() as MaterialEditor).Update();
|
|
|
|
|
|
|
|
|
|
//同步到效果图 (3个贴图的Store都会触发这个 一共触发了4次)
|
|
|
|
|
if (userConfig.synchronousEnable)
|
|
|
|
|
{
|
|
|
|
|
let d: IncrementData = { Add: { Entitys: [], Materials: [] }, Change: { Entitys: [], Materials: [ConverMaterialData(this.Material)] }, Delete: { Entitys: [], Materials: [] } };
|
|
|
|
|
app.WebSocket.Send(JSON.stringify(d));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
@action
|
|
|
|
@ -177,11 +232,26 @@ export class MaterialStore extends Singleton
|
|
|
|
|
{
|
|
|
|
|
this.name.set(this.Material.Name);
|
|
|
|
|
this.color.set(this.Material.color);
|
|
|
|
|
this.baseColorLuminance.set(this.Material.baseColorLuminance);
|
|
|
|
|
this.baseColorLightColor.set(this.Material.baseColorLightColor);
|
|
|
|
|
this.baseColorDarkColor.set(this.Material.baseColorDarkColor);
|
|
|
|
|
this.baseColorSaturability.set(this.Material.baseColorSaturability);
|
|
|
|
|
this.materialType.set(this.Material.type);
|
|
|
|
|
this.useTransparent.set(this.Material.transparent);
|
|
|
|
|
this.matalness.set(this.Material.matalness);
|
|
|
|
|
this.transparent.set(parseFloat((1 - this.Material.opacity).toFixed(2)));
|
|
|
|
|
this.bumpScale.set(this.Material.bumpScale);
|
|
|
|
|
this.roughness.set(this.Material.roughness);
|
|
|
|
|
this.specular.set(this.Material.specular);
|
|
|
|
|
this.fresnelPO.set(this.Material.fresnelPO);
|
|
|
|
|
this.fresnelST.set(this.Material.fresnelST);
|
|
|
|
|
this.fresnelLuminance.set(this.Material.fresnelLuminance);
|
|
|
|
|
this.fresnelLightColor.set(this.Material.fresnelLightColor);
|
|
|
|
|
this.fresnelDarkColor.set(this.Material.fresnelDarkColor);
|
|
|
|
|
this.opacityContrast.set(this.Material.opacityContrast);
|
|
|
|
|
this.opacityBorder.set(this.Material.opacityBorder);
|
|
|
|
|
this.opacityMaximum.set(this.Material.opacityMaximum);
|
|
|
|
|
this.opacityMinimum.set(this.Material.opacityMinimum);
|
|
|
|
|
this.isFull = this.Material.IsFull;
|
|
|
|
|
|
|
|
|
|
Object.assign(this.goodsInfo, this.Material.GoodsInfo);
|
|
|
|
|