@wandelbots/wandelbots-js-react-components 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +0 -29
  2. package/package.json +60 -43
  3. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +44 -0
  4. package/src/components/3d-viewport/PresetEnvironment.tsx +78 -0
  5. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +54 -0
  6. package/src/components/LoadingButton.stories.tsx +61 -0
  7. package/src/components/LoadingButton.tsx +19 -0
  8. package/src/components/LoadingCover.tsx +75 -0
  9. package/src/components/ThemeSelect.tsx +49 -0
  10. package/src/components/VelocitySlider.stories.tsx +32 -0
  11. package/src/components/VelocitySlider.tsx +52 -0
  12. package/src/components/jogging/JoggingCartesianAxisControl.stories.tsx +41 -0
  13. package/src/components/jogging/JoggingCartesianAxisControl.tsx +127 -0
  14. package/src/components/jogging/JoggingCartesianTab.tsx +265 -0
  15. package/src/components/jogging/JoggingCartesianValues.tsx +45 -0
  16. package/src/components/jogging/JoggingFreedriveTab.tsx +9 -0
  17. package/src/components/jogging/JoggingJointLimitDetector.tsx +51 -0
  18. package/src/components/jogging/JoggingJointRotationControl.stories.tsx +38 -0
  19. package/src/components/jogging/JoggingJointRotationControl.tsx +197 -0
  20. package/src/components/jogging/JoggingJointTab.tsx +93 -0
  21. package/src/components/jogging/JoggingJointValues.tsx +45 -0
  22. package/src/components/jogging/JoggingOptions.tsx +96 -0
  23. package/src/components/jogging/JoggingPanel.stories.tsx +26 -0
  24. package/src/components/jogging/JoggingPanel.tsx +148 -0
  25. package/src/components/jogging/JoggingStore.tsx +294 -0
  26. package/src/components/jogging/JoggingVelocitySlider.tsx +56 -0
  27. package/src/components/robots/ABB_1200_07_7.tsx +123 -0
  28. package/src/components/robots/AxisConfig.ts +3 -0
  29. package/src/components/robots/DHRobot.tsx +129 -0
  30. package/src/components/robots/FANUC_ARC_Mate_100iD.tsx +187 -0
  31. package/src/components/robots/FANUC_ARC_Mate_120iD.tsx +187 -0
  32. package/src/components/robots/FANUC_CRX10iA.tsx +167 -0
  33. package/src/components/robots/FANUC_CRX25iA.tsx +167 -0
  34. package/src/components/robots/FANUC_CRX25iAL.tsx +178 -0
  35. package/src/components/robots/KUKA_KR210_R2700.tsx +291 -0
  36. package/src/components/robots/KUKA_KR270_R2700.tsx +244 -0
  37. package/src/components/robots/RobotAnimator.tsx +83 -0
  38. package/src/components/robots/SupportedRobot.tsx +131 -0
  39. package/src/components/robots/UniversalRobots_UR10.tsx +112 -0
  40. package/src/components/robots/UniversalRobots_UR10e.tsx +275 -0
  41. package/src/components/robots/UniversalRobots_UR3.tsx +112 -0
  42. package/src/components/robots/UniversalRobots_UR3e.tsx +112 -0
  43. package/src/components/robots/UniversalRobots_UR5.tsx +111 -0
  44. package/src/components/robots/UniversalRobots_UR5e.tsx +280 -0
  45. package/src/components/robots/Yaskawa_AR1440.tsx +152 -0
  46. package/src/components/robots/Yaskawa_AR1730.tsx +165 -0
  47. package/src/components/robots/Yaskawa_AR2010.tsx +159 -0
  48. package/src/components/robots/Yaskawa_AR3120.tsx +160 -0
  49. package/src/components/robots/Yaskawa_AR900.tsx +121 -0
  50. package/src/components/utils/converters.ts +23 -0
  51. package/src/components/utils/errorHandling.ts +30 -0
  52. package/src/components/utils/hooks.tsx +54 -0
  53. package/src/components/utils/robotTreeQuery.ts +27 -0
  54. package/src/components/wandelscript-editor/WandelscriptEditor.stories.tsx +45 -0
  55. package/src/components/wandelscript-editor/WandelscriptEditor.tsx +114 -0
  56. package/src/components/wandelscript-editor/wandelscript.tmLanguage.ts +62 -0
  57. package/src/declarations.d.ts +10 -0
  58. package/src/i18n/config.ts +27 -0
  59. package/src/i18n/locales/de/translations.json +12 -0
  60. package/src/i18n/locales/en/translations.json +12 -0
  61. package/src/icons/arrowForwardFilled.tsx +7 -0
  62. package/src/icons/axis-x.svg +3 -0
  63. package/src/icons/axis-y.svg +3 -0
  64. package/src/icons/axis-z.svg +3 -0
  65. package/src/icons/expandFilled.tsx +11 -0
  66. package/src/icons/home.tsx +12 -0
  67. package/src/icons/infoOutlined.tsx +10 -0
  68. package/src/icons/jogging.svg +3 -0
  69. package/src/icons/robot.svg +3 -0
  70. package/src/icons/robot.tsx +14 -0
  71. package/src/icons/rotation.svg +4 -0
  72. package/src/icons/wbLogo.tsx +21 -0
  73. package/src/index.ts +7 -0
  74. package/src/themes/color.tsx +74 -0
  75. package/src/themes/theme.ts +150 -0
  76. package/src/themes/wbTheme.stories.tsx +64 -0
  77. package/src/themes/wbTheme.ts +186 -0
  78. package/dist/cjs/components/3d-viewport/SafetyZonesRenderer.d.ts +0 -2
  79. package/dist/cjs/index.js +0 -5875
  80. package/dist/cjs/types/components/3d-viewport/CoordinateSystemTransform.d.ts +0 -10
  81. package/dist/cjs/types/components/3d-viewport/PresetEnvironment.d.ts +0 -6
  82. package/dist/cjs/types/components/3d-viewport/SafetyZonesRenderer.d.ts +0 -6
  83. package/dist/cjs/types/components/robots/ABB_1200_07_7.d.ts +0 -2
  84. package/dist/cjs/types/components/robots/AxisConfig.d.ts +0 -2
  85. package/dist/cjs/types/components/robots/DHRobot.d.ts +0 -2
  86. package/dist/cjs/types/components/robots/FANUC_ARC_Mate_100iD.d.ts +0 -2
  87. package/dist/cjs/types/components/robots/FANUC_ARC_Mate_120iD.d.ts +0 -2
  88. package/dist/cjs/types/components/robots/FANUC_CRX10iA.d.ts +0 -2
  89. package/dist/cjs/types/components/robots/FANUC_CRX25iA.d.ts +0 -2
  90. package/dist/cjs/types/components/robots/FANUC_CRX25iAL.d.ts +0 -2
  91. package/dist/cjs/types/components/robots/KUKA_KR210_R2700.d.ts +0 -2
  92. package/dist/cjs/types/components/robots/KUKA_KR270_R2700.d.ts +0 -2
  93. package/dist/cjs/types/components/robots/RobotAnimator.d.ts +0 -11
  94. package/dist/cjs/types/components/robots/SupportedRobot.d.ts +0 -14
  95. package/dist/cjs/types/components/robots/UniversalRobots_UR10.d.ts +0 -2
  96. package/dist/cjs/types/components/robots/UniversalRobots_UR10e.d.ts +0 -2
  97. package/dist/cjs/types/components/robots/UniversalRobots_UR3.d.ts +0 -2
  98. package/dist/cjs/types/components/robots/UniversalRobots_UR3e.d.ts +0 -2
  99. package/dist/cjs/types/components/robots/UniversalRobots_UR5.d.ts +0 -2
  100. package/dist/cjs/types/components/robots/UniversalRobots_UR5e.d.ts +0 -2
  101. package/dist/cjs/types/components/robots/Yaskawa_AR1440.d.ts +0 -2
  102. package/dist/cjs/types/components/robots/Yaskawa_AR1730.d.ts +0 -2
  103. package/dist/cjs/types/components/robots/Yaskawa_AR2010.d.ts +0 -2
  104. package/dist/cjs/types/components/robots/Yaskawa_AR3120.d.ts +0 -2
  105. package/dist/cjs/types/components/robots/Yaskawa_AR900.d.ts +0 -2
  106. package/dist/cjs/types/components/utils/hooks.d.ts +0 -21
  107. package/dist/cjs/types/components/utils/robotTreeQuery.d.ts +0 -5
  108. package/dist/cjs/types/components/wandelscript-editor/WandelscriptEditor.d.ts +0 -12
  109. package/dist/cjs/types/components/wandelscript-editor/WandelscriptEditor.stories.d.ts +0 -5
  110. package/dist/cjs/types/components/wandelscript-editor/wandelscript.tmLanguage.d.ts +0 -44
  111. package/dist/cjs/types/icons/arrowForwardFilled.d.ts +0 -1
  112. package/dist/cjs/types/icons/expandFilled.d.ts +0 -1
  113. package/dist/cjs/types/icons/home.d.ts +0 -1
  114. package/dist/cjs/types/icons/infoOutlined.d.ts +0 -1
  115. package/dist/cjs/types/icons/robot.d.ts +0 -1
  116. package/dist/cjs/types/icons/wbLogo.d.ts +0 -6
  117. package/dist/cjs/types/index.d.ts +0 -4
  118. package/dist/cjs/types/themes/color.d.ts +0 -9
  119. package/dist/cjs/types/themes/theme.d.ts +0 -143
  120. package/dist/cjs/types/themes/wbTheme.d.ts +0 -1
  121. package/dist/cjs/types/themes/wbTheme.stories.d.ts +0 -6
  122. package/dist/esm/components/3d-viewport/SafetyZonesRenderer.d.ts +0 -2
  123. package/dist/esm/index.js +0 -5852
  124. package/dist/esm/types/components/3d-viewport/CoordinateSystemTransform.d.ts +0 -10
  125. package/dist/esm/types/components/3d-viewport/PresetEnvironment.d.ts +0 -6
  126. package/dist/esm/types/components/3d-viewport/SafetyZonesRenderer.d.ts +0 -6
  127. package/dist/esm/types/components/robots/ABB_1200_07_7.d.ts +0 -2
  128. package/dist/esm/types/components/robots/AxisConfig.d.ts +0 -2
  129. package/dist/esm/types/components/robots/DHRobot.d.ts +0 -2
  130. package/dist/esm/types/components/robots/FANUC_ARC_Mate_100iD.d.ts +0 -2
  131. package/dist/esm/types/components/robots/FANUC_ARC_Mate_120iD.d.ts +0 -2
  132. package/dist/esm/types/components/robots/FANUC_CRX10iA.d.ts +0 -2
  133. package/dist/esm/types/components/robots/FANUC_CRX25iA.d.ts +0 -2
  134. package/dist/esm/types/components/robots/FANUC_CRX25iAL.d.ts +0 -2
  135. package/dist/esm/types/components/robots/KUKA_KR210_R2700.d.ts +0 -2
  136. package/dist/esm/types/components/robots/KUKA_KR270_R2700.d.ts +0 -2
  137. package/dist/esm/types/components/robots/RobotAnimator.d.ts +0 -11
  138. package/dist/esm/types/components/robots/SupportedRobot.d.ts +0 -14
  139. package/dist/esm/types/components/robots/UniversalRobots_UR10.d.ts +0 -2
  140. package/dist/esm/types/components/robots/UniversalRobots_UR10e.d.ts +0 -2
  141. package/dist/esm/types/components/robots/UniversalRobots_UR3.d.ts +0 -2
  142. package/dist/esm/types/components/robots/UniversalRobots_UR3e.d.ts +0 -2
  143. package/dist/esm/types/components/robots/UniversalRobots_UR5.d.ts +0 -2
  144. package/dist/esm/types/components/robots/UniversalRobots_UR5e.d.ts +0 -2
  145. package/dist/esm/types/components/robots/Yaskawa_AR1440.d.ts +0 -2
  146. package/dist/esm/types/components/robots/Yaskawa_AR1730.d.ts +0 -2
  147. package/dist/esm/types/components/robots/Yaskawa_AR2010.d.ts +0 -2
  148. package/dist/esm/types/components/robots/Yaskawa_AR3120.d.ts +0 -2
  149. package/dist/esm/types/components/robots/Yaskawa_AR900.d.ts +0 -2
  150. package/dist/esm/types/components/utils/hooks.d.ts +0 -21
  151. package/dist/esm/types/components/utils/robotTreeQuery.d.ts +0 -5
  152. package/dist/esm/types/components/wandelscript-editor/WandelscriptEditor.d.ts +0 -12
  153. package/dist/esm/types/components/wandelscript-editor/WandelscriptEditor.stories.d.ts +0 -5
  154. package/dist/esm/types/components/wandelscript-editor/wandelscript.tmLanguage.d.ts +0 -44
  155. package/dist/esm/types/icons/arrowForwardFilled.d.ts +0 -1
  156. package/dist/esm/types/icons/expandFilled.d.ts +0 -1
  157. package/dist/esm/types/icons/home.d.ts +0 -1
  158. package/dist/esm/types/icons/index.d.ts +0 -6
  159. package/dist/esm/types/icons/infoOutlined.d.ts +0 -1
  160. package/dist/esm/types/icons/robot.d.ts +0 -1
  161. package/dist/esm/types/icons/wbLogo.d.ts +0 -6
  162. package/dist/esm/types/index.d.ts +0 -4
  163. package/dist/esm/types/themes/color.d.ts +0 -9
  164. package/dist/esm/types/themes/theme.d.ts +0 -143
  165. package/dist/esm/types/themes/wbTheme.d.ts +0 -1
  166. package/dist/esm/types/themes/wbTheme.stories.d.ts +0 -6
  167. package/dist/index.d.ts +0 -33
  168. /package/{dist/cjs/types/icons/index.d.ts → src/icons/index.ts} +0 -0
@@ -0,0 +1,275 @@
1
+ import { animated } from "@react-spring/three"
2
+ import { useGLTF } from "@react-three/drei"
3
+ import type { RobotProps } from "./SupportedRobot"
4
+ import RobotAnimator from "./RobotAnimator"
5
+ import type * as THREE from "three"
6
+
7
+ export function UniversalRobots_UR10e({
8
+ modelURL,
9
+ connectedMotionGroup,
10
+ ...props
11
+ }: RobotProps) {
12
+ const gltf = useGLTF(modelURL) as any
13
+ const nodes = gltf.nodes
14
+ const materials = gltf.materials
15
+
16
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
17
+ jointObjects.forEach(
18
+ (object, index) => (object.rotation.y = jointValues[index]!),
19
+ )
20
+ }
21
+
22
+ return (
23
+ <>
24
+ <RobotAnimator
25
+ connectedMotionGroup={connectedMotionGroup}
26
+ robotRootObjectName="Scene"
27
+ onRotationChanged={setRotation}
28
+ />
29
+ <group {...props} dispose={null}>
30
+ <group name="Scene">
31
+ <group name="UR10e" rotation={[Math.PI / 2, 0, 0]}>
32
+ <animated.group name="UR10e_J01" rotation={[-Math.PI / 2, 0, 0]}>
33
+ <animated.group
34
+ name="UR10e_J02"
35
+ position={[0, 0.181, 0]}
36
+ rotation={[Math.PI / 2, 0, 0]}
37
+ >
38
+ <animated.group name="UR10e_J03" position={[-0.613, 0, 0]}>
39
+ <animated.group name="UR10e_J04" position={[-0.572, 0, 0]}>
40
+ <animated.group
41
+ name="UR10e_J05"
42
+ position={[0, 0.174, 0]}
43
+ rotation={[Math.PI / 2, 0, 0]}
44
+ >
45
+ <animated.group
46
+ name="UR10e_J06"
47
+ position={[0, 0.12, 0]}
48
+ rotation={[-Math.PI / 2, 0, 0]}
49
+ >
50
+ <animated.group
51
+ name="UR10e_FLG"
52
+ position={[1.184, -0.174, 0.061]}
53
+ rotation={[-Math.PI / 2, 0, 0]}
54
+ >
55
+ <mesh
56
+ name="C-1000493"
57
+ geometry={nodes["C-1000493"].geometry}
58
+ material={materials.Black}
59
+ castShadow
60
+ receiveShadow
61
+ />
62
+ <mesh
63
+ name="C-1000493_1"
64
+ geometry={nodes["C-1000493_1"].geometry}
65
+ material={materials.Metal}
66
+ castShadow
67
+ receiveShadow
68
+ />
69
+ </animated.group>
70
+
71
+ <group
72
+ name="UR10e_L07"
73
+ position={[0, 0.117, 0]}
74
+ ></group>
75
+ </animated.group>
76
+ <group
77
+ name="UR10e_L06"
78
+ position={[1.184, 0.181, 0.174]}
79
+ rotation={[Math.PI, 0, 0]}
80
+ >
81
+ <mesh
82
+ name="C-1000492"
83
+ geometry={nodes["C-1000492"].geometry}
84
+ material={materials.DarkGray}
85
+ castShadow
86
+ receiveShadow
87
+ />
88
+ <mesh
89
+ name="C-1000492_1"
90
+ geometry={nodes["C-1000492_1"].geometry}
91
+ material={materials.Black}
92
+ castShadow
93
+ receiveShadow
94
+ />
95
+ <mesh
96
+ name="C-1000492_2"
97
+ geometry={nodes["C-1000492_2"].geometry}
98
+ material={materials.Blue}
99
+ castShadow
100
+ receiveShadow
101
+ />
102
+ <mesh
103
+ name="C-1000492_3"
104
+ geometry={nodes["C-1000492_3"].geometry}
105
+ material={materials.Screw}
106
+ castShadow
107
+ receiveShadow
108
+ />
109
+ </group>
110
+ </animated.group>
111
+ <group
112
+ name="UR10e_L05"
113
+ position={[1.184, 0, 0.181]}
114
+ rotation={[-Math.PI / 2, 0, 0]}
115
+ >
116
+ <mesh
117
+ name="C-1000491"
118
+ geometry={nodes["C-1000491"].geometry}
119
+ material={materials.DarkGray}
120
+ castShadow
121
+ receiveShadow
122
+ />
123
+ <mesh
124
+ name="C-1000491_1"
125
+ geometry={nodes["C-1000491_1"].geometry}
126
+ material={materials.Blue}
127
+ castShadow
128
+ receiveShadow
129
+ />
130
+ <mesh
131
+ name="C-1000491_2"
132
+ geometry={nodes["C-1000491_2"].geometry}
133
+ material={materials.Black}
134
+ castShadow
135
+ receiveShadow
136
+ />
137
+ <mesh
138
+ name="C-1000491_3"
139
+ geometry={nodes["C-1000491_3"].geometry}
140
+ material={materials.Screw}
141
+ castShadow
142
+ receiveShadow
143
+ />
144
+ </group>
145
+ </animated.group>
146
+ <group
147
+ name="UR10e_L04"
148
+ position={[0.613, 0, 0.181]}
149
+ rotation={[-Math.PI / 2, 0, 0]}
150
+ >
151
+ <mesh
152
+ name="C-1000490"
153
+ geometry={nodes["C-1000490"].geometry}
154
+ material={materials.Metal}
155
+ castShadow
156
+ receiveShadow
157
+ />
158
+ <mesh
159
+ name="C-1000490_1"
160
+ geometry={nodes["C-1000490_1"].geometry}
161
+ material={materials.Black}
162
+ castShadow
163
+ receiveShadow
164
+ />
165
+ <mesh
166
+ name="C-1000490_2"
167
+ geometry={nodes["C-1000490_2"].geometry}
168
+ material={materials.DarkGray}
169
+ castShadow
170
+ receiveShadow
171
+ />
172
+ <mesh
173
+ name="C-1000490_3"
174
+ geometry={nodes["C-1000490_3"].geometry}
175
+ material={materials.Blue}
176
+ castShadow
177
+ receiveShadow
178
+ />
179
+ </group>
180
+ </animated.group>
181
+ <animated.group
182
+ name="UR10e_L03"
183
+ position={[0, 0, 0.181]}
184
+ rotation={[-Math.PI / 2, 0, 0]}
185
+ >
186
+ <mesh
187
+ name="C-1000489"
188
+ geometry={nodes["C-1000489"].geometry}
189
+ material={materials.Blue}
190
+ castShadow
191
+ receiveShadow
192
+ />
193
+ <mesh
194
+ name="C-1000489_1"
195
+ geometry={nodes["C-1000489_1"].geometry}
196
+ material={materials.Black}
197
+ castShadow
198
+ receiveShadow
199
+ />
200
+ <mesh
201
+ name="C-1000489_2"
202
+ geometry={nodes["C-1000489_2"].geometry}
203
+ material={materials.DarkGray}
204
+ castShadow
205
+ receiveShadow
206
+ />
207
+ <mesh
208
+ name="C-1000489_3"
209
+ geometry={nodes["C-1000489_3"].geometry}
210
+ material={materials.Screw}
211
+ castShadow
212
+ receiveShadow
213
+ />
214
+ <mesh
215
+ name="C-1000489_4"
216
+ geometry={nodes["C-1000489_4"].geometry}
217
+ material={materials.Metal}
218
+ castShadow
219
+ receiveShadow
220
+ />
221
+ </animated.group>
222
+ </animated.group>
223
+ <group name="UR10e_L02">
224
+ <mesh
225
+ name="C-1000488"
226
+ geometry={nodes["C-1000488"].geometry}
227
+ material={materials.Black}
228
+ castShadow
229
+ receiveShadow
230
+ />
231
+ <mesh
232
+ name="C-1000488_1"
233
+ geometry={nodes["C-1000488_1"].geometry}
234
+ material={materials.Blue}
235
+ castShadow
236
+ receiveShadow
237
+ />
238
+ <mesh
239
+ name="C-1000488_2"
240
+ geometry={nodes["C-1000488_2"].geometry}
241
+ material={materials.Screw}
242
+ castShadow
243
+ receiveShadow
244
+ />
245
+ <mesh
246
+ name="C-1000488_3"
247
+ geometry={nodes["C-1000488_3"].geometry}
248
+ material={materials.DarkGray}
249
+ castShadow
250
+ receiveShadow
251
+ />
252
+ </group>
253
+ </animated.group>
254
+ <group name="UR10e_L01" rotation={[-Math.PI / 2, 0, 0]}>
255
+ <mesh
256
+ name="C-1000487"
257
+ geometry={nodes["C-1000487"].geometry}
258
+ material={materials.Black}
259
+ castShadow
260
+ receiveShadow
261
+ />
262
+ <mesh
263
+ name="C-1000487_1"
264
+ geometry={nodes["C-1000487_1"].geometry}
265
+ material={materials.Metal}
266
+ castShadow
267
+ receiveShadow
268
+ />
269
+ </group>
270
+ </group>
271
+ </group>
272
+ </group>
273
+ </>
274
+ )
275
+ }
@@ -0,0 +1,112 @@
1
+ import { animated } from "@react-spring/three"
2
+ import { useGLTF } from "@react-three/drei"
3
+ import type * as THREE from "three"
4
+ import type { RobotProps } from "./SupportedRobot"
5
+ import RobotAnimator from "./RobotAnimator"
6
+
7
+ export function UniversalRobots_UR3({
8
+ modelURL,
9
+ connectedMotionGroup,
10
+ ...props
11
+ }: RobotProps) {
12
+ const gltf = useGLTF(modelURL) as any
13
+ const nodes = gltf.nodes
14
+ const materials = gltf.materials
15
+
16
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
17
+ jointObjects.forEach(
18
+ (object, index) => (object.rotation.y = jointValues[index]!),
19
+ )
20
+ }
21
+
22
+ return (
23
+ <>
24
+ <RobotAnimator
25
+ connectedMotionGroup={connectedMotionGroup}
26
+ robotRootObjectName="Scene"
27
+ onRotationChanged={setRotation}
28
+ />
29
+ <group {...props} dispose={null}>
30
+ <group name="Scene">
31
+ <group name="UR3" rotation={[Math.PI / 2, 0, 0]}>
32
+ <animated.group name="UR3_J01" rotation={[-Math.PI / 2, 0, 0]}>
33
+ <animated.group
34
+ name="UR3_J02"
35
+ position={[0, 0.152, 0]}
36
+ rotation={[Math.PI / 2, 0, 0]}
37
+ >
38
+ <animated.group name="UR3_J03" position={[-0.244, 0, 0]}>
39
+ <animated.group name="UR3_J04" position={[-0.213, 0, 0]}>
40
+ <animated.group
41
+ name="UR3_J05"
42
+ position={[0, 0.112, 0]}
43
+ rotation={[Math.PI / 2, 0, 0]}
44
+ >
45
+ <mesh
46
+ name="UR3_05"
47
+ castShadow
48
+ receiveShadow
49
+ geometry={nodes.UR3_05.geometry}
50
+ material={materials.Standard}
51
+ />
52
+ <animated.group
53
+ name="UR3_J06"
54
+ position={[0, 0.085, 0]}
55
+ rotation={[-Math.PI / 2, 0, 0]}
56
+ >
57
+ <group name="UR3_FLG" position={[0, 0.082, 0]} />
58
+ <mesh
59
+ name="UR3_L06"
60
+ castShadow
61
+ receiveShadow
62
+ geometry={nodes.UR3_L06.geometry}
63
+ material={materials.Standard}
64
+ />
65
+ </animated.group>
66
+ </animated.group>
67
+ <mesh
68
+ name="UR3_L04"
69
+ castShadow
70
+ receiveShadow
71
+ geometry={nodes.UR3_L04.geometry}
72
+ material={materials.Standard}
73
+ />
74
+ </animated.group>
75
+ <mesh
76
+ name="UR3_L03"
77
+ castShadow
78
+ receiveShadow
79
+ geometry={nodes.UR3_L03.geometry}
80
+ material={materials.Standard}
81
+ />
82
+ </animated.group>
83
+ <mesh
84
+ name="UR3_L02"
85
+ castShadow
86
+ receiveShadow
87
+ geometry={nodes.UR3_L02.geometry}
88
+ material={materials.Standard}
89
+ />
90
+ </animated.group>
91
+ <mesh
92
+ name="UR3_L01"
93
+ castShadow
94
+ receiveShadow
95
+ geometry={nodes.UR3_L01.geometry}
96
+ material={materials.Standard}
97
+ />
98
+ </animated.group>
99
+ <mesh
100
+ name="UR3_L00"
101
+ castShadow
102
+ receiveShadow
103
+ geometry={nodes.UR3_L00.geometry}
104
+ material={materials.Standard}
105
+ rotation={[-Math.PI / 2, 0, 0]}
106
+ />
107
+ </group>
108
+ </group>
109
+ </group>
110
+ </>
111
+ )
112
+ }
@@ -0,0 +1,112 @@
1
+ import { useGLTF } from "@react-three/drei"
2
+ import type * as THREE from "three"
3
+ import type { RobotProps } from "./SupportedRobot"
4
+ import { animated } from "@react-spring/three"
5
+ import RobotAnimator from "./RobotAnimator"
6
+
7
+ export function UniversalRobots_UR3e({
8
+ modelURL,
9
+ connectedMotionGroup,
10
+ ...props
11
+ }: RobotProps) {
12
+ const gltf = useGLTF(modelURL) as any
13
+ const nodes = gltf.nodes
14
+ const materials = gltf.materials
15
+
16
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
17
+ jointObjects.forEach(
18
+ (object, index) => (object.rotation.y = jointValues[index]!),
19
+ )
20
+ }
21
+
22
+ return (
23
+ <>
24
+ <RobotAnimator
25
+ connectedMotionGroup={connectedMotionGroup}
26
+ robotRootObjectName="Scene"
27
+ onRotationChanged={setRotation}
28
+ />
29
+ <group {...props} dispose={null}>
30
+ <group name="Scene">
31
+ <animated.group name="UR3e" rotation={[Math.PI / 2, 0, 0]}>
32
+ <animated.group name="UR3e_J01" rotation={[-Math.PI / 2, 0, 0]}>
33
+ <animated.group
34
+ name="UR3e_J02"
35
+ position={[0, 0.152, 0]}
36
+ rotation={[Math.PI / 2, 0, 0]}
37
+ >
38
+ <animated.group name="UR3e_J03" position={[-0.244, 0, 0]}>
39
+ <animated.group name="UR3e_J04" position={[-0.213, 0, 0]}>
40
+ <animated.group
41
+ name="UR3e_J05"
42
+ position={[0, 0.131, 0]}
43
+ rotation={[Math.PI / 2, 0, 0]}
44
+ >
45
+ <animated.group
46
+ name="UR3e_J06"
47
+ position={[0, 0.085, 0]}
48
+ rotation={[-Math.PI / 2, 0, 0]}
49
+ >
50
+ <group name="UR3e_FLG" position={[0, 0.092, 0]} />
51
+ <mesh
52
+ name="UR3e_L06"
53
+ castShadow
54
+ receiveShadow
55
+ geometry={nodes.UR3e_L06.geometry}
56
+ material={materials.Standard}
57
+ />
58
+ </animated.group>
59
+ <mesh
60
+ name="UR3e_L05"
61
+ castShadow
62
+ receiveShadow
63
+ geometry={nodes.UR3e_L05.geometry}
64
+ material={materials.Standard}
65
+ />
66
+ </animated.group>
67
+ <mesh
68
+ name="UR3e_L04"
69
+ castShadow
70
+ receiveShadow
71
+ geometry={nodes.UR3e_L04.geometry}
72
+ material={materials.Standard}
73
+ />
74
+ </animated.group>
75
+ <mesh
76
+ name="UR3e_L03"
77
+ castShadow
78
+ receiveShadow
79
+ geometry={nodes.UR3e_L03.geometry}
80
+ material={materials.Standard}
81
+ />
82
+ </animated.group>
83
+ <mesh
84
+ name="UR3e_L02"
85
+ castShadow
86
+ receiveShadow
87
+ geometry={nodes.UR3e_L02.geometry}
88
+ material={materials.Standard}
89
+ />
90
+ </animated.group>
91
+ <mesh
92
+ name="UR3e_L01"
93
+ castShadow
94
+ receiveShadow
95
+ geometry={nodes.UR3e_L01.geometry}
96
+ material={materials.Standard}
97
+ />
98
+ </animated.group>
99
+ <mesh
100
+ name="UR3e_L00"
101
+ castShadow
102
+ receiveShadow
103
+ geometry={nodes.UR3e_L00.geometry}
104
+ material={materials.Standard}
105
+ rotation={[-Math.PI / 2, 0, 0]}
106
+ />
107
+ </animated.group>
108
+ </group>
109
+ </group>
110
+ </>
111
+ )
112
+ }
@@ -0,0 +1,111 @@
1
+ import { useGLTF } from "@react-three/drei"
2
+ import type * as THREE from "three"
3
+ import { animated } from "@react-spring/three"
4
+ import type { RobotProps } from "./SupportedRobot"
5
+ import RobotAnimator from "./RobotAnimator"
6
+
7
+ export function UniversalRobots_UR5({
8
+ modelURL,
9
+ connectedMotionGroup,
10
+ ...props
11
+ }: RobotProps) {
12
+ const gltf = useGLTF(modelURL) as any
13
+ const nodes = gltf.nodes
14
+
15
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
16
+ jointObjects.forEach(
17
+ (object, index) => (object.rotation.y = jointValues[index]!),
18
+ )
19
+ }
20
+
21
+ return (
22
+ <>
23
+ <RobotAnimator
24
+ connectedMotionGroup={connectedMotionGroup}
25
+ robotRootObjectName="Scene"
26
+ onRotationChanged={setRotation}
27
+ />
28
+ <group {...props} dispose={null}>
29
+ <group name="Scene">
30
+ <group name="UR5" rotation={[Math.PI / 2, 0, 0]}>
31
+ <animated.group name="UR5_J01" rotation={[-Math.PI / 2, 0, 0]}>
32
+ <animated.group
33
+ name="UR5_J02"
34
+ position={[0, 0.089, 0]}
35
+ rotation={[Math.PI / 2, 0, 0]}
36
+ >
37
+ <animated.group name="UR5_J03" position={[-0.425, 0, 0]}>
38
+ <animated.group name="UR5_J04" position={[-0.392, 0, 0]}>
39
+ <animated.group
40
+ name="UR5_J05"
41
+ position={[0, 0.109, 0]}
42
+ rotation={[Math.PI / 2, 0, 0]}
43
+ >
44
+ <animated.group
45
+ name="UR5_J06"
46
+ position={[0, 0.095, 0]}
47
+ rotation={[-Math.PI / 2, 0, 0]}
48
+ >
49
+ <group name="UR5_FLG" position={[0, 0.082, 0]} />
50
+ <mesh
51
+ name="UR5_L06"
52
+ castShadow
53
+ receiveShadow
54
+ geometry={nodes.UR5_L06.geometry}
55
+ material={nodes.UR5_L06.material}
56
+ />
57
+ </animated.group>
58
+ <mesh
59
+ name="UR5_L05"
60
+ castShadow
61
+ receiveShadow
62
+ geometry={nodes.UR5_L05.geometry}
63
+ material={nodes.UR5_L05.material}
64
+ />
65
+ </animated.group>
66
+ <mesh
67
+ name="UR5_L04"
68
+ castShadow
69
+ receiveShadow
70
+ geometry={nodes.UR5_L04.geometry}
71
+ material={nodes.UR5_L04.material}
72
+ />
73
+ </animated.group>
74
+ <mesh
75
+ name="UR5_L03"
76
+ castShadow
77
+ receiveShadow
78
+ geometry={nodes.UR5_L03.geometry}
79
+ material={nodes.UR5_L03.material}
80
+ />
81
+ </animated.group>
82
+ <mesh
83
+ name="UR5_L02"
84
+ castShadow
85
+ receiveShadow
86
+ geometry={nodes.UR5_L02.geometry}
87
+ material={nodes.UR5_L02.material}
88
+ />
89
+ </animated.group>
90
+ <mesh
91
+ name="UR5_L01"
92
+ castShadow
93
+ receiveShadow
94
+ geometry={nodes.UR5_L01.geometry}
95
+ material={nodes.UR5_L01.material}
96
+ />
97
+ </animated.group>
98
+ <mesh
99
+ name="UR5_L00"
100
+ castShadow
101
+ receiveShadow
102
+ geometry={nodes.UR5_L00.geometry}
103
+ material={nodes.UR5_L00.material}
104
+ rotation={[-Math.PI / 2, 0, 0]}
105
+ />
106
+ </group>
107
+ </group>
108
+ </group>
109
+ </>
110
+ )
111
+ }