design.go 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package model
  2. import (
  3. "time"
  4. "sku3dweb/comm"
  5. "go.mongodb.org/mongo-driver/bson/primitive"
  6. )
  7. const (
  8. MeshState_SetFile = 0 //create
  9. MeshState_SetOsgjs = 1 //模型转换到osgjs了,可以用于webgl显示了
  10. MeshState_SetOsgjsFailded = -1 //模型转换到osgjs了,可以用于webgl显示了
  11. MeshState_SetShadow = 2 //阴影已生成
  12. )
  13. type Evn3dOption struct {
  14. Rotation float64 `bson:"rotation" json:"rotation"`
  15. Exposure float64 `bson:"exposure" json:"exposure"`
  16. }
  17. type DesingSceneEnv3d struct {
  18. Id primitive.ObjectID `bson:"id,omitempty" json:"id"`
  19. Name string `bson:"name,omitempty" json:"name"`
  20. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  21. HDR *OssType `bson:"hdr,omitempty" json:"hdr"`
  22. Config *Evn3dHdrConf `bson:"config,omitempty" json:"config"`
  23. Options *Evn3dOption `bson:"options,omitempty" json:"options"`
  24. ToneMap *ToneMap `bson:"toneMap,omitempty" json:"toneMap"`
  25. }
  26. type Uvtransform struct {
  27. Scale float32 `bson:"scale" json:"scale"`
  28. Rotate float32 `bson:"rotate" json:"rotate"`
  29. OffsetX float32 `bson:"offsetX" json:"offsetX"`
  30. OffsetY float32 `bson:"offsetY" json:"offsetY"`
  31. FinalScale float32 `bson:"finalScale" json:"finalScale"`
  32. }
  33. type ImageMatConf struct {
  34. Image *OssType `bson:"image,omitempty" json:"image"`
  35. Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
  36. }
  37. type SceneComponent struct {
  38. Name string `bson:"name,omitempty" json:"name"`
  39. FabricScope string `bson:"fabricScope,omitempty" json:"fabricScope,omitempty"` //面料使用的库
  40. FabricId *primitive.ObjectID `bson:"fabricId,omitempty" json:"fabricId,omitempty"`
  41. CardId *primitive.ObjectID `bson:"cardId,omitempty" json:"cardId,omitempty"`
  42. MatType uint8 `bson:"matType,omitempty" json:"matType"`
  43. Imagemat *ImageMatConf `bson:"imageMat,omitempty" json:"imageMat,omitempty"`
  44. Uvtransform *Uvtransform `bson:"transform,omitempty" json:"transform"`
  45. Color *Vect3 `bson:"color,omitempty" json:"color"`
  46. GroupId uint64 `bson:"groupId,omitempty" json:"groupId"`
  47. Visible *bool `bson:"visible,omitempty" json:"visible"`
  48. Card *comm.MaterialConf `bson:"card,omitempty" json:"card"` //特殊材质球和3d面料数据
  49. }
  50. type SceneBackground struct {
  51. Id string `bson:"id,omitempty" json:"_id"`
  52. Image *OssType `bson:"image,omitempty" json:"image"`
  53. Type int32 `bson:"type,omitempty" json:"type"`
  54. Color *Vect3 `bson:"color,omitempty" json:"color"`
  55. }
  56. type ModelTransform struct {
  57. Pos Vect3 `bson:"pos,omitempty" json:"pos"`
  58. Scale Vect3 `bson:"scale,omitempty" json:"scale"`
  59. Rotation Vect4 `bson:"rotation,omitempty" json:"rotation"`
  60. }
  61. type SceneModels struct {
  62. Id string `bson:"id,omitempty" json:"id"`
  63. MeshId *primitive.ObjectID `bson:"meshId,omitempty" json:"meshId,omitempty"`
  64. Type string `bson:"type,omitempty" json:"type"`
  65. TypeId *primitive.ObjectID `bson:"typeId,omitempty" json:"typeId,omitempty"`
  66. Transform ModelTransform `bson:"transform,omitempty" json:"transform,omitempty"`
  67. Components []*SceneComponent `bson:"components,omitempty" json:"components,omitempty"`
  68. }
  69. type SceneCamera struct {
  70. Id string `bson:"id,omitempty" json:"id"`
  71. Position *Vect3 `bson:"position,omitempty" json:"position"`
  72. Target *Vect3 `bson:"target,omitempty" json:"target"`
  73. Enable *bool `bson:"enable,omitempty" json:"enable"`
  74. }
  75. type Matrix [16]float64
  76. type Light struct {
  77. Id string `bson:"id,omitempty" json:"id"`
  78. Type string `bson:"type,omitempty" json:"type"`
  79. Enable bool `bson:"enable,omitempty" json:"enable"`
  80. Matrix Matrix `bson:"matrix,omitempty" json:"matrix"`
  81. Color Vect3 `bson:"color,omitempty" json:"color"`
  82. Intensity float64 `bson:"intensity,omitempty" json:"intensity"`
  83. }
  84. type SceneLight struct {
  85. Enable bool `bson:"enable,omitempty" json:"enable"`
  86. List []*Light `bson:"list,omitempty" json:"list"`
  87. }
  88. type DesignScene struct {
  89. Id uint64 `bson:"id,omitempty" json:"id,omitempty"`
  90. Name string `bson:"name,omitempty" json:"name,omitempty"`
  91. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail,omitempty"`
  92. Images []*OssType `bson:"images,omitempty" json:"images,omitempty"`
  93. Videos []*OssType `bson:"videos,omitempty" json:"videos,omitempty"`
  94. Locks []string `bson:"locks,omitempty" json:"locks,omitempty"`
  95. Background *SceneBackground `bson:"background,omitempty" json:"background,omitempty"`
  96. Env *DesingSceneEnv3d `bson:"env,omitempty" json:"env,omitempty"`
  97. Components []*SceneComponent `bson:"components,omitempty" json:"components,omitempty"`
  98. Models []*SceneModels `bson:"models,omitempty" json:"models,omitempty"`
  99. Stickers []*Sticker `bson:"stickers,omitempty" json:"stickers,omitempty"`
  100. Lights *SceneLight `bson:"lights,omitempty" json:"lights,omitempty"`
  101. }
  102. type Design struct {
  103. Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
  104. UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId"`
  105. ShoeId primitive.ObjectID `bson:"shoeId,omitempty" json:"shoeId"`
  106. TeamId string `bson:"teamId,omitempty" json:"teamId"` //所属团队Id
  107. CompanyId string `bson:"companyId,omitempty" json:"companyId"` //所属团队Id
  108. Name string `bson:"name,omitempty" json:"name"`
  109. CusNum string `bson:"cusNum,omitempty" json:"cusNum"` //编号
  110. Sharepwd string `bson:"sharepwd,omitempty" json:"sharepwd"`
  111. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  112. CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
  113. Scenes []*DesignScene `bson:"scenes,omitempty" json:"scenes"`
  114. EnvList []*Env3d `bson:"envList,omitempty" json:"envList"`
  115. Sex uint8 `bson:"sex,omitempty" json:"sex,omitempty"`
  116. Season uint8 `bson:"season,omitempty" json:"season,omitempty"`
  117. Type string `bson:"type,omitempty" json:"type,omitempty"`
  118. IsPublic *bool `bson:"isPublic,omitempty" json:"isPublic,omitempty"`
  119. FromId string `bson:"fromId,omitempty" json:"fromId,omitempty"` //从哪里拷贝的
  120. Categories []string `bson:"categories,omitempty" json:"categories,omitempty"` //所有一级分类的id数组 contain filter里面的值
  121. State *int32 `bson:"state,omitempty" json:"state"`
  122. MeshState *int32 `bson:"meshState,omitempty" json:"meshState"` //模型状态
  123. }
  124. type Sticker struct {
  125. Id string `bson:"id,omitempty" json:"id,omitempty"`
  126. Img *OssType `bson:"img,omitempty" json:"img,omitempty"`
  127. Scale *Vect2 `bson:"scale,omitempty" json:"scale,omitempty"`
  128. Visible *bool `bson:"visible,omitempty" json:"visible,omitempty"`
  129. Rotation float32 `bson:"rotation" json:"rotation"`
  130. Mirror *Vect2 `bson:"mirror,omitempty" json:"mirror,omitempty"`
  131. Anchors []*Vect2 `bson:"anchors,omitempty" json:"anchors,omitempty"`
  132. Config map[string]interface{} `bson:"config,omitempty" json:"config,omitempty"`
  133. }