commEntity.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package comm
  2. import (
  3. "time"
  4. "go.mongodb.org/mongo-driver/bson/primitive"
  5. )
  6. type OssType struct {
  7. Url string `bson:"url" json:"url"`
  8. Size int64 `bson:"size" json:"size"`
  9. }
  10. func (o *OssType) UpdateSourceUrl(handler UpdateUrlHandler) {
  11. o.Url = handler(o.Url)
  12. }
  13. func NewOssTypeWithMap(data map[string]interface{}) *OssType {
  14. url := data["url"].(string)
  15. size := data["size"].(int64)
  16. return &OssType{Url: url, Size: size}
  17. }
  18. type MaterialConfig struct {
  19. Id string
  20. Data interface{}
  21. }
  22. type Transform struct {
  23. }
  24. type Vect2 [2]float64
  25. type Vect3 [3]float64
  26. type Vect4 [4]float64
  27. type VectXYWH struct {
  28. Y float64 `bson:"y" json:"y"`
  29. X float64 `bson:"x" json:"x"`
  30. W float64 `bson:"w" json:"w"`
  31. H float64 `bson:"h" json:"h"`
  32. }
  33. type Env3dOption struct {
  34. Rotation float64 `bson:"rotation" json:"rotation"`
  35. Exposure float64 `bson:"exposure" json:"exposure"`
  36. }
  37. type ToneMap struct {
  38. Method *int32 `bson:"method,omitempty" json:"method"` //0 "linear" 值0 "reinhard" 值 1 "filmic”:值2
  39. Exposure *float64 `bson:"exposure,omitempty" json:"exposure"` //默认值1 范围0到2
  40. Brightness *float64 `bson:"brightness,omitempty" json:"brightness"` //默认值0 范围-1到 1
  41. Contrast *float64 `bson:"contrast,omitempty" json:"contrast"` //默认值0 范围-1到1
  42. Saturation *float64 `bson:"saturation,omitempty" json:"saturation"` //默认值1 范围0-2
  43. }
  44. type Env3d struct {
  45. Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
  46. Name string `bson:"name,omitempty" json:"name"`
  47. CusNum string `bson:"cusNum,omitempty" json:"cusNum"` //自定义编号
  48. Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"`
  49. CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
  50. HDR *OssType `bson:"hdr,omitempty" json:"hdr"`
  51. Config *Evn3dHdrConf `bson:"config,omitempty" json:"config"`
  52. Options *Env3dOption `bson:"options,omitempty" json:"options"`
  53. ToneMap *ToneMap `bson:"toneMap,omitempty" json:"toneMap"`
  54. Background *Evn3dBackground `bson:"background,omitempty" json:"background"`
  55. UserData interface{} `bson:"userData,omitempty" json:"userData"` //用户数据
  56. }
  57. type Evn3dTextureImage struct {
  58. File string `bson:"file,omitempty" json:"file"`
  59. SizeUncompressed int32 `bson:"sizeUncompressed,omitempty" json:"sizeUncompressed"`
  60. Samples uint32 `bson:"samples,omitempty" json:"samples"`
  61. Height float32 `bson:"height,omitempty" json:"height"`
  62. Width float32 `bson:"width,omitempty" json:"width"`
  63. SizeCompressed int32 `bson:"sizeCompressed,omitempty" json:"sizeCompressed"`
  64. Blur float32 `bson:"blur,omitempty,truncate" json:"blur"`
  65. }
  66. type Evn3dTexture struct {
  67. Images []*Evn3dTextureImage `bson:"images,omitempty" json:"images"`
  68. LimitSize int32 `bson:"limitSize,omitempty" json:"limitSize"`
  69. Encoding string `bson:"encoding,omitempty" json:"encoding"`
  70. Type string `bson:"type,omitempty" json:"type"`
  71. Format string `bson:"format,omitempty" json:"format"`
  72. }
  73. type Evn3dLight struct {
  74. Direction Vect3 `bson:"direction,omitempty" json:"direction"`
  75. Lum_ratio float64 `bson:"lum_ratio,omitempty" json:"lum_ratio"`
  76. Color Vect3 `bson:"color,omitempty" json:"color"`
  77. Luminosity float64 `bson:"luminosity,omitempty" json:"luminosity"`
  78. Sum float64 `bson:"sum,omitempty" json:"sum"`
  79. Area VectXYWH `bson:"area,omitempty" json:"area"`
  80. Error int32 `bson:"error,omitempty" json:"error"`
  81. Variance float64 `bson:"variance,omitempty" json:"variance"`
  82. }
  83. type Evn3dHdrConf struct {
  84. Textures []*Evn3dTexture `bson:"textures,omitempty" json:"textures"`
  85. WriteByChannel bool `bson:"writeByChannel,omitempty" json:"writeByChannel"`
  86. Lights []*Evn3dLight `bson:"lights,omitempty" json:"lights"`
  87. DiffuseSPH []float64 `bson:"diffuseSPH,omitempty" json:"diffuseSPH"`
  88. }
  89. func (c *Evn3dHdrConf) UpdateSourceUrl(handler UpdateUrlHandler) {
  90. for _, t := range c.Textures {
  91. if t.Images == nil {
  92. continue
  93. }
  94. for _, img := range t.Images {
  95. img.File = handler(img.File)
  96. }
  97. }
  98. }
  99. type CanvasBackground struct {
  100. Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
  101. Color *Vect3 `bson:"color,omitempty" json:"color"`
  102. Image *OssType `bson:"image,omitempty" json:"image"`
  103. Type int32 `bson:"type,omitempty" json:"type"`
  104. Order int32 `bson:"order,omitempty" json:"order"`
  105. CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
  106. }
  107. func NewEnv3dToneMapWithMap(tone map[string]interface{}) *ToneMap {
  108. method := int32(0)
  109. Exposure := float64(1.0)
  110. Saturation := float64(1.0)
  111. Brightness := float64(0.0)
  112. Contrast := float64(0.0)
  113. if tone == nil {
  114. return &ToneMap{
  115. Method: &method,
  116. Exposure: &Exposure,
  117. Saturation: &Saturation,
  118. Brightness: &Brightness,
  119. Contrast: &Contrast,
  120. }
  121. }
  122. if v, ok := tone["method"].(int32); ok {
  123. method = v
  124. }
  125. if v, ok := tone["exposure"].(float64); ok {
  126. Exposure = v
  127. }
  128. if v, ok := tone["saturation"].(float64); ok {
  129. Saturation = v
  130. }
  131. if v, ok := tone["brightness"].(float64); ok {
  132. Brightness = v
  133. }
  134. if v, ok := tone["contrast"].(float64); ok {
  135. Contrast = v
  136. }
  137. return &ToneMap{Method: &method, Exposure: &Exposure, Saturation: &Saturation, Brightness: &Brightness, Contrast: &Contrast}
  138. }
  139. type Evn3dBackground struct {
  140. Color *Vect3 `bson:"color,omitempty" json:"color"`
  141. Image *OssType `bson:"image,omitempty" json:"image"`
  142. Type int32 `bson:"type,omitempty" json:"type"`
  143. }