render.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package comm
  2. import (
  3. "time"
  4. "go.mongodb.org/mongo-driver/bson/primitive"
  5. )
  6. type RenderComponent struct {
  7. Name string `bson:"name,omitempty" json:"name"`
  8. FabricId *primitive.ObjectID `bson:"fabricId,omitempty" json:"fabricId,omitempty"`
  9. CardId *primitive.ObjectID `bson:"cardId,omitempty" json:"cardId,omitempty"`
  10. MatType uint8 `bson:"matType,omitempty" json:"matType"`
  11. Imagemat *ImageMatConf `bson:"imageMat,omitempty" json:"imageMat,omitempty"`
  12. Uvtransform *Uvtransform `bson:"transform,omitempty" json:"transform"`
  13. Color *Vect3 `bson:"color,omitempty" json:"color"`
  14. GroupId uint64 `bson:"groupId,omitempty" json:"groupId"`
  15. Visible *bool `bson:"visible,omitempty" json:"visible"`
  16. Card *MaterialConf `bson:"card,omitempty" json:"card"`
  17. }
  18. type RenderShoeComp struct {
  19. Name string
  20. Config *RenderComponent
  21. }
  22. type RenderModelComp struct {
  23. Id string `bson:"id,omitempty" json:"id"`
  24. MeshId *primitive.ObjectID `bson:"meshId,omitempty" json:"meshId,omitempty"`
  25. MeshUrl string `bson:"meshUrl,omitempty" json:"meshUrl,omitempty"`
  26. Type string `bson:"type,omitempty" json:"type"`
  27. TypeId *primitive.ObjectID `bson:"typeId,omitempty" json:"typeId,omitempty"`
  28. Transform ModelTransform `bson:"transform,omitempty" json:"transform,omitempty"`
  29. Components []*RenderShoeComp `bson:"components,omitempty" json:"components,omitempty"`
  30. }
  31. const (
  32. TaskRunState_Created = 0
  33. TaskRunState_Quened = 1
  34. TaskRunState_WorkRuning = 2
  35. TaskRunState_ReWorkRuning = 3
  36. TaskRunState_Succ = 4
  37. TaskRunState_Fail = 5
  38. )
  39. type TaskRunResult struct {
  40. Images []*OssType
  41. }
  42. type ConvMeshRunResult struct {
  43. Osgjs *OssType
  44. Thumbnail *OssType
  45. File *OssType
  46. }
  47. type RenderSceneLight struct {
  48. Type string `bson:"type,omitempty" json:"type"`
  49. Direction Vect3 `bson:"direction,omitempty" json:"direction"`
  50. Color Vect3 `bson:"color,omitempty" json:"color"`
  51. Intensity float64 `bson:"intensity,omitempty" json:"intensity"`
  52. AngularDiameter float64 `bson:"angularDiameter,omitempty" json:"angularDiameter"`
  53. }
  54. type RenderTask struct {
  55. Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
  56. UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId"`
  57. DesignId primitive.ObjectID `bson:"designId" json:"designId"`
  58. WebId int64 `bson:"webId" json:"webId"`
  59. RunState int32 `bson:"runState" json:"runState"`
  60. RunPercent int32 `bson:"runPercent" json:"runPercent"`
  61. RunResult *TaskRunResult `bson:"runResult" json:"runResult"`
  62. Width int32 `bson:"width" json:"width"`
  63. Height int32 `bson:"height" json:"height"`
  64. CreateTime time.Time `bson:"createTime" json:"createTime"`
  65. Scene *DesignScene `bson:"scene" json:"scene"`
  66. MeshId string `bson:"meshId" json:"meshId"`
  67. MeshUrl string `bson:"meshUrl" json:"meshUrl"`
  68. MeshShadow string `bson:"meshShadow" json:"meshShadow"`
  69. Cameras []*RenderCamera `bson:"cameras" json:"cameras"`
  70. Lights []*RenderSceneLight `bson:"lights" json:"lights"`
  71. ShoeComps []*RenderShoeComp `bson:"shoeComps" json:"shoeComps"`
  72. ModelComps []*RenderModelComp `bson:"modelComps" json:"modelComps"`
  73. MaxSamples int32 `bson:"maxSamples" json:"maxSamples"`
  74. Exposure float32 `bson:"exposure" json:"exposure"`
  75. Format string `bson:"format" json:"format"` //渲染格式 png jpg
  76. }
  77. type TreeRenderTask struct {
  78. Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
  79. UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId"`
  80. AssetId primitive.ObjectID `bson:"assetId" json:"assetId"`
  81. RunState int32 `bson:"runState" json:"runState"`
  82. RunPercent int32 `bson:"runPercent" json:"runPercent"`
  83. RunResult *TaskRunResult `bson:"runResult" json:"runResult"`
  84. Width int32 `bson:"width" json:"width"`
  85. Height int32 `bson:"height" json:"height"`
  86. CreateTime time.Time `bson:"createTime" json:"createTime"`
  87. Package *AssetPackage `bson:"pack" json:"pack"`
  88. SceneId string `bson:"sceneId" json:"sceneId"`
  89. Lights []*RenderSceneLight `bson:"lights" json:"lights"`
  90. Cameras []*RenderCamera `bson:"cameras" json:"cameras"`
  91. MaxSamples int32 `bson:"maxSamples" json:"maxSamples"`
  92. Exposure float32 `bson:"exposure" json:"exposure"`
  93. Format string `bson:"format" json:"format"` //渲染格式 png jpg
  94. DevicePixelRatio *float32 `bson:"devicePixelRatio" json:"devicePixelRatio"` //渲染格式 png jpg
  95. }
  96. type RenderSetting struct {
  97. MaxSamples int32 `bson:"maxSamples" json:"maxSamples"` //32
  98. Exposure float32 `bson:"exposure" json:"exposure"` //1.2
  99. }
  100. type RenderCamera struct {
  101. Thumbnail *OssType `bson:"thumbnail" json:"thumbnail,omitempty"` //
  102. Position *Vec3Obj `bson:"position" json:"position,omitempty"` //
  103. Fov float32 `bson:"fov" json:"fov"` //45
  104. Direction *Vec3Obj `bson:"direction" json:"direction,omitempty"`
  105. Viewport CameraViewPort `bson:"viewport" json:"viewport"`
  106. AspectRatio *float32 `bson:"aspectRatio" json:"aspectRatio,omitempty"`
  107. }
  108. type CameraViewPort struct {
  109. Width int32 `bson:"width" json:"width"`
  110. Height int32 `bson:"height" json:"height"`
  111. }
  112. type SunLight struct {
  113. Type string `bson:"type" json:"type"`
  114. Intensity float32 `bson:"intensity" json:"intensity"`
  115. Direction Vec3Obj `bson:"direction" json:"direction"`
  116. AngularDiameter float32 `bson:"angularDiameter" json:"angularDiameter"`
  117. Color Vect3 `bson:"color" json:"color"`
  118. }
  119. type RenderEnv struct {
  120. Color Vect3 `bson:"color" json:"color"`
  121. Rotation float32 `bson:"rotation" json:"rotation"`
  122. Intensity float32 `bson:"intensity" json:"intensity"`
  123. FilePath string `bson:"filePath" json:"filePath"`
  124. Visiable bool `bson:"visiable" json:"visiable"`
  125. }
  126. type Vec3Obj struct {
  127. X float64 `bson:"x" json:"x"`
  128. Y float64 `bson:"y" json:"y"`
  129. Z float64 `bson:"z" json:"z"`
  130. }
  131. type Vec4Obj struct {
  132. X float64 `bson:"x" json:"x"`
  133. Y float64 `bson:"y" json:"y"`
  134. Z float64 `bson:"z" json:"z"`
  135. W float64 `bson:"w" json:"w"`
  136. }
  137. type RenderMatParam struct {
  138. Name string `bson:"name" json:"name"`
  139. Type string `bson:"type" json:"type"`
  140. Value interface{} `bson:"value" json:"value,omitempty"`
  141. }
  142. type RenderMat struct {
  143. Name string `bson:"name" json:"name"`
  144. Type string `bson:"type" json:"type"`
  145. UVProjection string `bson:"uvProjection" json:"uvProjection"` //"box", "uv"
  146. Parameters []*RenderMatParam `bson:"parameters" json:"parameters"`
  147. }
  148. type RenderGroup struct {
  149. Name string `bson:"name" json:"name"`
  150. Position Vec3Obj `bson:"position" json:"position"`
  151. Rotation Vec4Obj `bson:"rotation" json:"rotation"`
  152. Scale Vec3Obj `bson:"scale" json:"scale"`
  153. Materials []*RenderMat `bson:"materials" json:"materials"`
  154. FilePath string `bson:"filePath" json:"filePath"`
  155. }
  156. type RenderConf struct {
  157. Setting *RenderSetting `bson:"setting" json:"setting"`
  158. Camera *RenderCamera `bson:"camera" json:"camera"`
  159. Lights []*RenderSceneLight `bson:"lights" json:"lights"`
  160. Enviroment *RenderEnv `bson:"enviroment" json:"enviroment"`
  161. Groups []*RenderGroup `bson:"groups" json:"groups"`
  162. Shadow *Shadow `bson:"shadow" json:"shadow"`
  163. }
  164. type WorkerRequest struct {
  165. Name string `json:"name"`
  166. UserId string `json:"userId"`
  167. SessionId int64 `json:"sessionId"`
  168. TaskId string `json:"taskId"`
  169. MainId string `json:"mainId"`
  170. TaskCollection string `json:"taskCollection"`
  171. WorkerType string `json:"workerType"`
  172. CreateTime time.Time `json:"createTime"`
  173. }
  174. type WorkerResponse struct {
  175. ErrorNo int `json:"errorNo"`
  176. ErrorDesc string `json:"errorDesc"`
  177. Result struct {
  178. WorkingId string `json:"workingId"`
  179. } `json:"result"`
  180. }
  181. type Shadow struct {
  182. Size *Vect2 `bson:"size,omitempty" json:"size,omitempty"`
  183. Position *Vect3 `bson:"position,omitempty" json:"position,omitempty"`
  184. File string `bson:"file,omitempty" json:"file,omitempty"`
  185. }