123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- package comm
- import (
- "time"
- "go.mongodb.org/mongo-driver/bson/primitive"
- )
- type DesignProduct struct { //设计单品信息
- Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
- ProjectId primitive.ObjectID `bson:"projectId,omitempty" json:"projectId"`
- FromDbConfId string `bson:"fromDbConfId,omitempty" json:"fromDbConfId"` //数据库定义Id
- FromAssetConfId string `bson:"fromAssetConfId,omitempty" json:"fromAssetConfId"`
- FromId string `bson:"fromId,omitempty" json:"fromId"`
- Name string `bson:"name,omitempty" json:"name"`
- Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
- StaticMesh *StaticMeshSource `bson:"staticMesh,omitempty" json:"staticMesh"` //静态模型资产
- UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"`
- }
- type ProductHeader struct {
- Id string `bson:"id,omitempty" json:"id"`
- FromDbConfId string `bson:"fromDbConfId,omitempty" json:"fromDbConfId"` //数据库定义Id
- FromAssetConfId string `bson:"fromAssetConfId,omitempty" json:"fromAssetConfId"` //数据包
- FromId string `bson:"fromId,omitempty" json:"fromId"`
- Name string `bson:"name,omitempty" json:"name"`
- Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
- CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
- }
- type PackageProductCompMat struct {
- Id string `bson:"id" json:"id"`
- UvMap *OssType `bson:"uvmap" json:"uvmap"`
- UvSize *UvSize `bson:"uvsize" json:"uvsize"`
- Name string `bson:"name" json:"name"`
- MatId string `bson:"matId" json:"matId"`
- GroupId string `bson:"groupId" json:"groupId"` //部件分组Id
- Index int `bson:"index" json:"index"`
- Visible *bool `bson:"visible" json:"visible"`
- Locked *bool `bson:"locked" json:"locked"` //是否锁定
- Images []*ComponentImage `bson:"images" json:"images"`
- PaperMatId string `bson:"paperMatId" json:"paperMatId"` //纸张id
- UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据
- }
- type PackageProduct struct {
- Id string `bson:"id,omitempty" json:"id"`
- GeomId string `bson:"geomId,omitempty" json:"geomId"`
- Name string `bson:"name,omitempty" json:"name"`
- CusNum string `bson:"cusNum,omitempty" json:"cusNum,omitempty"`
- Type string `bson:"type,omitempty" json:"type,omitempty"` //类型
- Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
- Components []*PackageProductCompMat `bson:"components,omitempty" json:"components"`
- UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据
- }
- func (p *PackageProduct) UpdateSourceUrl(handler UpdateUrlHandler) {
- if p.Thumbnail != nil {
- p.Thumbnail.UpdateSourceUrl(handler)
- }
- for _, c := range p.Components {
- if c.UvMap != nil {
- c.UvMap.UpdateSourceUrl(handler)
- }
- }
- }
- type PackageGeom struct {
- Id string `bson:"id,omitempty" json:"id"`
- Name string `bson:"name,omitempty" json:"name"`
- Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
- Osgjs *OssType `bson:"osgjs,omitempty" json:"osgjs"`
- File *OssType `bson:"file,omitempty" json:"file"` //hdr or fbx
- Glb *OssType `bson:"glb,omitempty" json:"glb"` //hdr or fbx
- Shadow *OssType `bson:"shadow,omitempty" json:"shadow,omitempty"`
- BoundingBox *Obb `bson:"boundingBox,omitempty" json:"boundingBox,omitempty"`
- GenType string `bson:"genType,omitempty" json:"genType,omitempty"` //生成方式构建类型staticMesh, paramBox //默认staticMesh类型
- GenConf interface{} `bson:"genConf,omitempty" json:"genConf,omitempty"` //构建配置
- }
- func (g *PackageGeom) UpdateSourceUrl(handler UpdateUrlHandler) {
- if g.Thumbnail != nil {
- g.Thumbnail.UpdateSourceUrl(handler)
- }
- if g.Osgjs != nil {
- g.Osgjs.UpdateSourceUrl(handler)
- }
- if g.File != nil {
- g.File.UpdateSourceUrl(handler)
- }
- if g.Glb != nil {
- g.Glb.UpdateSourceUrl(handler)
- }
- if g.Shadow != nil {
- g.Shadow.UpdateSourceUrl(handler)
- }
- }
- type PackageSceneProduct struct {
- Id string `bson:"id,omitempty" json:"id"`
- ProdId string `bson:"prodId,omitempty" json:"prodId"`
- Transform *ModelTransform `bson:"transform,omitempty" json:"transform,omitempty"`
- Visible *bool `bson:"visible,omitempty" json:"visible,omitempty"`
- NoShadow *bool `bson:"noShadow,omitempty" json:"noShadow,omitempty"` //是否不显示阴影
- UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据
- }
- type PackageScene struct {
- Id string `bson:"id,omitempty" json:"id,omitempty"`
- Name string `bson:"name,omitempty" json:"name,omitempty"`
- Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail,omitempty"`
- EnvId string `bson:"envId,omitempty" json:"envId,omitempty"`
- Products []*PackageSceneProduct `bson:"products,omitempty" json:"products,omitempty"`
- Lights *SceneLight `bson:"lights,omitempty" json:"lights,omitempty"`
- Stickers []*PackSceneSticker `bson:"stickers,omitempty" json:"stickers,omitempty"`
- CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
- UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"`
- Background *Evn3dBackground `bson:"background,omitempty" json:"background"` //添加背景配置
- UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //自定义数据
- }
- func (s *PackageScene) UpdateSourceUrl(handler UpdateUrlHandler) {
- if s.Thumbnail != nil {
- s.Thumbnail.UpdateSourceUrl(handler)
- }
- for _, tiker := range s.Stickers {
- if tiker.Img != nil {
- tiker.Img.UpdateSourceUrl(handler)
- }
- }
- if s.Background != nil && s.Background.Image != nil {
- s.Background.Image.UpdateSourceUrl(handler)
- }
- }
- type PositionObj2d struct {
- X int `bson:"x,omitempty" json:"x"`
- Y int `bson:"y,omitempty" json:"y"`
- }
- type PackSceneSticker struct {
- Id string `bson:"id,omitempty" json:"id"`
- Config interface{} `bson:"config,omitempty" json:"config"`
- Img *OssType `bson:"img,omitempty" json:"img"`
- Mirror []int `bson:"mirror,omitempty" json:"mirror"`
- Position PositionObj2d `bson:"position,omitempty" json:"position"`
- Rotation int `bson:"rotation,omitempty" json:"rotation"`
- Scale []float32 `bson:"scale,omitempty" json:"scale"`
- Visible *bool `bson:"visible,omitempty" json:"visible"`
- }
- type PackageEnv3d struct {
- Id string `bson:"id,omitempty" json:"id"`
- Name string `bson:"name,omitempty" json:"name"`
- CusNum string `bson:"cusNum,omitempty" json:"cusNum"` //自定义编号
- Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
- CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
- HDR *OssType `bson:"hdr,omitempty" json:"hdr"`
- Config *Evn3dHdrConf `bson:"config,omitempty" json:"config"`
- Options *Env3dOption `bson:"options,omitempty" json:"options"`
- ToneMap *ToneMap `bson:"toneMap,omitempty" json:"toneMap"`
- Background *Evn3dBackground `bson:"background,omitempty" json:"background"`
- UserData interface{} `bson:"userData,omitempty" json:"userData"` //用户数据
- }
- func (e *PackageEnv3d) UpdateSourceUrl(handler UpdateUrlHandler) {
- if e.Thumbnail != nil {
- e.Thumbnail.UpdateSourceUrl(handler)
- }
- if e.HDR != nil {
- e.HDR.UpdateSourceUrl(handler)
- }
- if e.Config != nil {
- e.Config.UpdateSourceUrl(handler)
- }
- if e.Background != nil && e.Background.Image != nil {
- e.Background.Image.UpdateSourceUrl(handler)
- }
- }
- type PackageMaterial struct {
- Id string `bson:"id,omitempty" json:"id"`
- Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
- Name string `bson:"name,omitempty" json:"name"`
- CusNum string `bson:"cusNum,omitempty" json:"cusNum"` //编号
- NormalMap *OssType `bson:"normalMap,omitempty" json:"normalMap"`
- DisplaceMap *OssType `bson:"displaceMap,omitempty" json:"displaceMap"` //置换贴图
- DisplaceFactor *float64 `bson:"displaceFactor,omitempty" json:"displaceFactor"`
- BaseMap *OssType `bson:"baseMap,omitempty" json:"baseMap"`
- BaseColor *Vect3 `bson:"baseColor,omitempty" json:"baseColor"`
- RoughMap *OssType `bson:"roughMap,omitempty" json:"roughMap"`
- RoughFactor *float64 `bson:"roughFactor,omitempty" json:"roughFactor"`
- MetalMap *OssType `bson:"metalMap,omitempty" json:"metalMap"`
- MetalFactor *float64 `bson:"metalFactor,omitempty" json:"metalFactor"`
- DiffuseMap *OssType `bson:"diffuseMap,omitempty" json:"diffuseMap"`
- DiffuseColor *Vect3 `bson:"diffuseColor,omitempty" json:"diffuseColor"`
- GlossMap *OssType `bson:"glossMap,omitempty" json:"glossMap"` //光泽贴图
- GlossFactor *float64 `bson:"glossFactor,omitempty" json:"glossFactor"`
- SpecMap *OssType `bson:"specMap,omitempty" json:"specMap"` //高光贴图
- SpecColor *Vect3 `bson:"specColor,omitempty" json:"specColor"` //高光贴图
- //工艺相关材质球
- TechMaterial *TechMatConfig `bson:"techMaterial" json:"techMaterial"`
- Images []*ComponentImage `bson:"images" json:"images"`
- OpacMap *OssType `bson:"opacMap,omitempty" json:"opacMap"` //透明度
- OpacFactor *float64 `bson:"opacFactor,omitempty" json:"opacFactor"` //透明度贴图
- Type string `bson:"type,omitempty" json:"type"` //spec meta //高光流 金属流(默认)
- Uvtransform *MaterailUv `bson:"uv,omitempty" json:"uv"`
- CusUvTransform *MaterailUv `bson:"cusUv,omitempty" json:"cusUv"` //用户定义的uv
- //LogicType string `bson:"logicType,omitempty" json:"logicType"` //fabric3d fabric2d color //3d面料 2d图片面料 color //特殊材质球
- UvMap string `bson:"uvMap,omitempty" json:"uvMap"` //uv的映射方式 box 或 uv 默认box
- UserData interface{} `bson:"userData,omitempty" json:"userData"` //指定要数据放置的字段
- }
- func (m *PackageMaterial) CopyFromMatConf(c *MaterialConf) {
- m.Thumbnail = c.Thumbnail
- m.BaseColor = c.BaseColor
- m.BaseMap = c.BaseMap
- m.MetalFactor = c.MetalFactor
- m.MetalMap = c.MetalMap
- m.RoughFactor = c.RoughFactor
- m.RoughMap = c.RoughMap
- m.NormalMap = c.NormalMap
- m.Name = c.Name
- if len(c.Type) > 0 {
- m.Type = c.Type
- }
- m.OpacFactor = c.OpacFactor
- m.OpacMap = c.OpacMap
- m.Uvtransform = c.Uvtransform
- m.CusNum = c.CusNum
- m.DiffuseColor = c.DiffuseColor
- m.DiffuseMap = c.DiffuseMap
- m.DisplaceFactor = c.DisplaceFactor
- m.DisplaceMap = c.DisplaceMap
- m.GlossFactor = c.GlossFactor
- m.GlossMap = c.GlossMap
- m.SpecColor = c.SpecColor
- m.SpecMap = c.SpecMap
- }
- type Queen3dPackageSource struct {
- Version string `bson:"version,omitempty" json:"version"`
- ViewMode string `bson:"viewMode,omitempty" json:"viewMode"` //prod or scene //单品或场景
- //材质球
- Mats []*MatConfigSource `bson:"mats,omitempty" json:"mats"`
- //几何体
- Geoms []*PackageGeom `bson:"geoms,omitempty" json:"geoms"`
- //环境
- Env3ds []*PackageEnv3d `bson:"env3ds,omitempty" json:"env3ds"`
- //使用的单品
- Products []*PackageProduct `bson:"products,omitempty" json:"products"`
- //场景
- Scenes []*PackageScene `bson:"scenes,omitempty" json:"scenes"`
- UserData interface{} `bson:"userData,omitempty" json:"userData"` //指定要数据放置的字段
- }
|