@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,167 @@
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 FANUC_CRX25iA({ modelURL, connectedMotionGroup, ...props }: RobotProps) {
8
+ const gltf = useGLTF(modelURL) as any
9
+ const nodes = gltf.nodes
10
+ const materials = gltf.materials
11
+ const rotationOffsets = [0, Math.PI / 2, 0, 0, 0, 0]
12
+
13
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
14
+ jointObjects.forEach(
15
+ (object, index) =>
16
+ (object.rotation.y = jointValues[index]! + rotationOffsets[index]!),
17
+ )
18
+ }
19
+
20
+ return (
21
+ <>
22
+ <RobotAnimator
23
+ connectedMotionGroup={connectedMotionGroup}
24
+ robotRootObjectName="Scene"
25
+ onRotationChanged={setRotation}
26
+ />
27
+ <group {...props} dispose={null}>
28
+ <group name="Scene" position={[0, -0.37, 0]}>
29
+ <group name="CRX25iA_L00">
30
+ <mesh
31
+ name="J1BASE_NetGen_Coarse"
32
+ castShadow
33
+ receiveShadow
34
+ geometry={nodes.J1BASE_NetGen_Coarse.geometry}
35
+ material={materials.Fanuc_BlackMetal}
36
+ />
37
+ <mesh
38
+ name="J1BASE_NetGen_Coarse_1"
39
+ castShadow
40
+ receiveShadow
41
+ geometry={nodes.J1BASE_NetGen_Coarse_1.geometry}
42
+ material={materials.Fanuc_GreenPlastic}
43
+ />
44
+ </group>
45
+ <animated.group name="CRX25iA_J00">
46
+ <animated.group
47
+ name="CRX25iA_J01"
48
+ position={[0, 0.37, 0]}
49
+ rotation={[Math.PI / 2, Math.PI / 2, 0]}
50
+ >
51
+ <animated.group name="CRX25iA_J02" position={[0.95, 0, 0]}>
52
+ <animated.group
53
+ name="CRX25iA_J03"
54
+ rotation={[-Math.PI / 2, 0, 0]}
55
+ >
56
+ <animated.group
57
+ name="CRX25iA_J04"
58
+ position={[0, -0.75, 0]}
59
+ rotation={[Math.PI / 2, 0, 0]}
60
+ >
61
+ <animated.group
62
+ name="CRX25iA_J05"
63
+ position={[0, 0.185, 0]}
64
+ rotation={[-Math.PI / 2, 0, 0]}
65
+ >
66
+ <group
67
+ name="CRX25iA_FLG"
68
+ position={[0, -0.18, 0]}
69
+ rotation={[-Math.PI, 0, 0]}
70
+ />
71
+ <mesh
72
+ name="CRX25iA_L06"
73
+ castShadow
74
+ receiveShadow
75
+ geometry={nodes.CRX25iA_L06.geometry}
76
+ material={materials.Fanuc_BlackMetal}
77
+ position={[0, -0.18, 0]}
78
+ />
79
+ </animated.group>
80
+ <group name="CRX25iA_L05" position={[0, 0.185, 0]}>
81
+ <mesh
82
+ name="J6CASING_NetGen_Coarse"
83
+ castShadow
84
+ receiveShadow
85
+ geometry={nodes.J6CASING_NetGen_Coarse.geometry}
86
+ material={materials.Fanuc_WhitePlastic}
87
+ />
88
+ <mesh
89
+ name="J6CASING_NetGen_Coarse_1"
90
+ castShadow
91
+ receiveShadow
92
+ geometry={nodes.J6CASING_NetGen_Coarse_1.geometry}
93
+ material={materials.Fanuc_GreenPlastic}
94
+ />
95
+ </group>
96
+ </animated.group>
97
+ <group name="CRX25iA_L04" position={[0, -0.75, 0]}>
98
+ <mesh
99
+ name="J3ARM_NetGen_Coarse"
100
+ castShadow
101
+ receiveShadow
102
+ geometry={nodes.J3ARM_NetGen_Coarse.geometry}
103
+ material={materials.Fanuc_WhitePlastic}
104
+ />
105
+ <mesh
106
+ name="J3ARM_NetGen_Coarse_1"
107
+ castShadow
108
+ receiveShadow
109
+ geometry={nodes.J3ARM_NetGen_Coarse_1.geometry}
110
+ material={materials.Fanuc_RedPlastic}
111
+ />
112
+ <mesh
113
+ name="J3ARM_NetGen_Coarse_2"
114
+ castShadow
115
+ receiveShadow
116
+ geometry={nodes.J3ARM_NetGen_Coarse_2.geometry}
117
+ material={materials.Fanuc_BlackPlastic}
118
+ />
119
+ </group>
120
+ </animated.group>
121
+ <group name="CRX25iA_L03">
122
+ <mesh
123
+ name="J3CASING_NetGen_Coarse"
124
+ castShadow
125
+ receiveShadow
126
+ geometry={nodes.J3CASING_NetGen_Coarse.geometry}
127
+ material={materials.Fanuc_WhitePlastic}
128
+ />
129
+ <mesh
130
+ name="J3CASING_NetGen_Coarse_1"
131
+ castShadow
132
+ receiveShadow
133
+ geometry={nodes.J3CASING_NetGen_Coarse_1.geometry}
134
+ material={materials.Fanuc_GreenPlastic}
135
+ />
136
+ </group>
137
+ </animated.group>
138
+ <mesh
139
+ name="CRX25iA_L02"
140
+ castShadow
141
+ receiveShadow
142
+ geometry={nodes.CRX25iA_L02.geometry}
143
+ material={materials.Fanuc_WhitePlastic}
144
+ />
145
+ </animated.group>
146
+ <group name="CRX25iA_L01" position={[0, 0.18, 0]}>
147
+ <mesh
148
+ name="J2BASE_NetGen_Coarse"
149
+ castShadow
150
+ receiveShadow
151
+ geometry={nodes.J2BASE_NetGen_Coarse.geometry}
152
+ material={materials.Fanuc_WhitePlastic}
153
+ />
154
+ <mesh
155
+ name="J2BASE_NetGen_Coarse_1"
156
+ castShadow
157
+ receiveShadow
158
+ geometry={nodes.J2BASE_NetGen_Coarse_1.geometry}
159
+ material={materials.Fanuc_GreenLED}
160
+ />
161
+ </group>
162
+ </animated.group>
163
+ </group>
164
+ </group>
165
+ </>
166
+ )
167
+ }
@@ -0,0 +1,178 @@
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 FANUC_CRX25iAL({ modelURL, connectedMotionGroup, ...props }: RobotProps) {
8
+ const gltf = useGLTF(modelURL) as any
9
+ const nodes = gltf.nodes
10
+ const materials = gltf.materials
11
+ const rotationOffsets = [0, Math.PI / 2, 0, 0, 0, 0]
12
+
13
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
14
+ jointObjects.forEach(
15
+ (object, index) =>
16
+ (object.rotation.y = jointValues[index]! + rotationOffsets[index]!),
17
+ )
18
+ }
19
+
20
+ return (
21
+ <>
22
+ <RobotAnimator
23
+ connectedMotionGroup={connectedMotionGroup}
24
+ robotRootObjectName="Scene"
25
+ onRotationChanged={setRotation}
26
+ />
27
+ <group {...props} dispose={null}>
28
+ <group name="Scene">
29
+ <animated.group name="CRX10iA_J00">
30
+ <animated.group
31
+ name="CRX10iA_J01"
32
+ position={[0, 0.245, 0]}
33
+ rotation={[Math.PI / 2, Math.PI / 2, 0]}
34
+ >
35
+ <animated.group name="CRX10iA_J02" position={[0.71, 0, 0]}>
36
+ <animated.group
37
+ name="CRX10iA_J03"
38
+ rotation={[-Math.PI / 2, 0, 0]}
39
+ >
40
+ <animated.group
41
+ name="CRX10iA_J04"
42
+ position={[0, -0.54, 0]}
43
+ rotation={[Math.PI / 2, 0, 0]}
44
+ >
45
+ <animated.group
46
+ name="CRX10iA_J05"
47
+ position={[0, 0.15, 0]}
48
+ rotation={[-Math.PI / 2, 0, 0]}
49
+ >
50
+ <group
51
+ name="CRX10iA_FLG"
52
+ position={[0, -0.16, 0]}
53
+ rotation={[-Math.PI, 0, 0]}
54
+ />
55
+ <mesh
56
+ name="CRX10iA_L06"
57
+ castShadow
58
+ receiveShadow
59
+ geometry={nodes.CRX10iA_L06.geometry}
60
+ material={materials["Fanuc_BlackMetal.001"]}
61
+ position={[0, -0.16, 0]}
62
+ rotation={[0, 0, -Math.PI / 2]}
63
+ />
64
+ </animated.group>
65
+ <group
66
+ name="CRX10iA_L05"
67
+ position={[0, 0.15, 0]}
68
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
69
+ >
70
+ <mesh
71
+ name="J5CASING_UNIT001"
72
+ castShadow
73
+ receiveShadow
74
+ geometry={nodes.J5CASING_UNIT001.geometry}
75
+ material={materials["Fanuc_WhitePlastic.001"]}
76
+ />
77
+ <mesh
78
+ name="J5CASING_UNIT001_1"
79
+ castShadow
80
+ receiveShadow
81
+ geometry={nodes.J5CASING_UNIT001_1.geometry}
82
+ material={materials["Fanuc_Green.001"]}
83
+ />
84
+ </group>
85
+ </animated.group>
86
+ <group
87
+ name="CRX10iA_L04"
88
+ position={[0, -0.54, 0]}
89
+ rotation={[0, 0, -Math.PI / 2]}
90
+ >
91
+ <mesh
92
+ name="NAME_LABEL_CRX_10iA_L001"
93
+ castShadow
94
+ receiveShadow
95
+ geometry={nodes.NAME_LABEL_CRX_10iA_L001.geometry}
96
+ material={materials["Fanuc_WhitePlastic.001"]}
97
+ />
98
+ <mesh
99
+ name="NAME_LABEL_CRX_10iA_L001_1"
100
+ castShadow
101
+ receiveShadow
102
+ geometry={nodes.NAME_LABEL_CRX_10iA_L001_1.geometry}
103
+ material={materials["Fanuc_RedPlastic.001"]}
104
+ />
105
+ <mesh
106
+ name="NAME_LABEL_CRX_10iA_L001_2"
107
+ castShadow
108
+ receiveShadow
109
+ geometry={nodes.NAME_LABEL_CRX_10iA_L001_2.geometry}
110
+ material={materials["Fanuc_BlackPlastic.001"]}
111
+ />
112
+ </group>
113
+ </animated.group>
114
+ <group
115
+ name="CRX10iA_L03"
116
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
117
+ >
118
+ <mesh
119
+ name="J3CASING_UNIT001"
120
+ castShadow
121
+ receiveShadow
122
+ geometry={nodes.J3CASING_UNIT001.geometry}
123
+ material={materials["Fanuc_WhitePlastic.001"]}
124
+ />
125
+ <mesh
126
+ name="J3CASING_UNIT001_1"
127
+ castShadow
128
+ receiveShadow
129
+ geometry={nodes.J3CASING_UNIT001_1.geometry}
130
+ material={materials["Fanuc_Green.001"]}
131
+ />
132
+ </group>
133
+ </animated.group>
134
+ <mesh
135
+ name="CRX10iA_L02"
136
+ castShadow
137
+ receiveShadow
138
+ geometry={nodes.CRX10iA_L02.geometry}
139
+ material={materials["Fanuc_WhitePlastic.001"]}
140
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
141
+ />
142
+ </animated.group>
143
+ <group name="CRX10iA_L01" position={[0, 0.128, 0]}>
144
+ <mesh
145
+ name="J2BASE_UNIT001"
146
+ castShadow
147
+ receiveShadow
148
+ geometry={nodes.J2BASE_UNIT001.geometry}
149
+ material={materials["Fanuc_WhitePlastic.001"]}
150
+ />
151
+ <mesh
152
+ name="J2BASE_UNIT001_1"
153
+ castShadow
154
+ receiveShadow
155
+ geometry={nodes.J2BASE_UNIT001_1.geometry}
156
+ material={materials["Fanuc_Green.001"]}
157
+ />
158
+ <mesh
159
+ name="J2BASE_UNIT001_2"
160
+ castShadow
161
+ receiveShadow
162
+ geometry={nodes.J2BASE_UNIT001_2.geometry}
163
+ material={materials["Fanuc_GreenLED.001"]}
164
+ />
165
+ </group>
166
+ </animated.group>
167
+ <mesh
168
+ name="CRX10iA_L00"
169
+ castShadow
170
+ receiveShadow
171
+ geometry={nodes.CRX10iA_L00.geometry}
172
+ material={materials["Fanuc_BlackMetal.001"]}
173
+ />
174
+ </group>
175
+ </group>
176
+ </>
177
+ )
178
+ }
@@ -0,0 +1,291 @@
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 KUKA_KR210_R2700({
8
+ modelURL,
9
+ connectedMotionGroup,
10
+ ...props
11
+ }: RobotProps) {
12
+ const gltf = useGLTF(modelURL) as any
13
+
14
+ const nodes = gltf.nodes
15
+ const materials = gltf.materials
16
+
17
+ const rotationOffsets = [0, 0, -Math.PI / 2, 0, 0, 0]
18
+
19
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
20
+ jointObjects.forEach(
21
+ (object, index) =>
22
+ (object.rotation.y = jointValues[index]! + rotationOffsets[index]!),
23
+ )
24
+ }
25
+
26
+ return (
27
+ <>
28
+ <RobotAnimator
29
+ connectedMotionGroup={connectedMotionGroup}
30
+ robotRootObjectName="Scene"
31
+ onRotationChanged={setRotation}
32
+ />
33
+ <group {...props} dispose={null}>
34
+ <group name="Scene">
35
+ <group name="kuka_kr210_2700">
36
+ <animated.group name="joint_01">
37
+ <animated.group
38
+ name="joint_02"
39
+ position={[0.33, 0.645, 0]}
40
+ rotation={[-Math.PI / 2, 0, 0]}
41
+ >
42
+ <animated.group
43
+ name="joint_03"
44
+ position={[1.15, 0, 0]}
45
+ rotation={[0, -Math.PI / 2, 0]}
46
+ >
47
+ <animated.group
48
+ name="joint_04"
49
+ position={[0.115, 0, 0]}
50
+ rotation={[Math.PI / 2, 0, 0]}
51
+ >
52
+ <animated.group
53
+ name="joint_05"
54
+ position={[0, -1.22, 0]}
55
+ rotation={[-Math.PI / 2, 0, 0]}
56
+ >
57
+ <animated.group
58
+ name="joint_06"
59
+ rotation={[Math.PI / 2, 0, 0]}
60
+ >
61
+ <group
62
+ name="flange"
63
+ position={[0, -0.215, 0]}
64
+ rotation={[-Math.PI, 0, 0]}
65
+ />
66
+ <group
67
+ name="link_6"
68
+ position={[0, -0.17, 0]}
69
+ rotation={[0, 0, -Math.PI / 2]}
70
+ >
71
+ <mesh
72
+ name="visuals006"
73
+ castShadow
74
+ receiveShadow
75
+ geometry={nodes.visuals006.geometry}
76
+ material={materials.material_Material_Metall_black}
77
+ />
78
+ </group>
79
+ </animated.group>
80
+ <group
81
+ name="link_5"
82
+ position={[0, 0.059, 0]}
83
+ rotation={[Math.PI / 2, 0, -Math.PI / 2]}
84
+ >
85
+ <group name="visuals005">
86
+ <mesh
87
+ name="visuals005_1"
88
+ castShadow
89
+ receiveShadow
90
+ geometry={nodes.visuals005_1.geometry}
91
+ material={materials.material_Material_metal_black}
92
+ />
93
+ <mesh
94
+ name="visuals005_2"
95
+ castShadow
96
+ receiveShadow
97
+ geometry={nodes.visuals005_2.geometry}
98
+ material={materials.material_Material_kuka_orange}
99
+ />
100
+ </group>
101
+ </group>
102
+ </animated.group>
103
+ <group
104
+ name="link_4"
105
+ position={[0, -0.869, 0]}
106
+ rotation={[0, 0, -Math.PI / 2]}
107
+ >
108
+ <group name="visuals004">
109
+ <mesh
110
+ name="visuals004_1"
111
+ castShadow
112
+ receiveShadow
113
+ geometry={nodes.visuals004_1.geometry}
114
+ material={materials.material_Material_metal_black}
115
+ />
116
+ <mesh
117
+ name="visuals004_2"
118
+ castShadow
119
+ receiveShadow
120
+ geometry={nodes.visuals004_2.geometry}
121
+ material={materials.material_Material_kuka_orange}
122
+ />
123
+ </group>
124
+ </group>
125
+ </animated.group>
126
+ <group
127
+ name="link_3"
128
+ position={[0, -0.105, 0]}
129
+ rotation={[Math.PI / 2, 0, -Math.PI / 2]}
130
+ >
131
+ <group name="visuals003">
132
+ <mesh
133
+ name="visuals003_1"
134
+ castShadow
135
+ receiveShadow
136
+ geometry={nodes.visuals003_1.geometry}
137
+ material={materials.material_Material_rubber}
138
+ />
139
+ <mesh
140
+ name="visuals003_2"
141
+ castShadow
142
+ receiveShadow
143
+ geometry={nodes.visuals003_2.geometry}
144
+ material={materials.material_Material_aluminium}
145
+ />
146
+ <mesh
147
+ name="visuals003_3"
148
+ castShadow
149
+ receiveShadow
150
+ geometry={nodes.visuals003_3.geometry}
151
+ material={materials.material_Material_metal_black}
152
+ />
153
+ <mesh
154
+ name="visuals003_4"
155
+ castShadow
156
+ receiveShadow
157
+ geometry={nodes.visuals003_4.geometry}
158
+ material={materials.material_Material_kuka_black}
159
+ />
160
+ <mesh
161
+ name="visuals003_5"
162
+ castShadow
163
+ receiveShadow
164
+ geometry={nodes.visuals003_5.geometry}
165
+ material={materials.material_Material_Rubber_black}
166
+ />
167
+ <mesh
168
+ name="visuals003_6"
169
+ castShadow
170
+ receiveShadow
171
+ geometry={nodes.visuals003_6.geometry}
172
+ material={materials.material_Material_kuka_orange}
173
+ />
174
+ <mesh
175
+ name="visuals003_7"
176
+ castShadow
177
+ receiveShadow
178
+ geometry={nodes.visuals003_7.geometry}
179
+ material={materials.material_Material_stainless_steel}
180
+ />
181
+ </group>
182
+ </group>
183
+ </animated.group>
184
+ <group
185
+ name="link_2"
186
+ position={[0, 0.009, 0]}
187
+ rotation={[Math.PI / 2, 0, 0]}
188
+ >
189
+ <group name="visuals002">
190
+ <mesh
191
+ name="visuals002_1"
192
+ castShadow
193
+ receiveShadow
194
+ geometry={nodes.visuals002_1.geometry}
195
+ material={materials.material_Material_metal_black}
196
+ />
197
+ <mesh
198
+ name="visuals002_2"
199
+ castShadow
200
+ receiveShadow
201
+ geometry={nodes.visuals002_2.geometry}
202
+ material={materials.material_Material_Rubber_black}
203
+ />
204
+ <mesh
205
+ name="visuals002_3"
206
+ castShadow
207
+ receiveShadow
208
+ geometry={nodes.visuals002_3.geometry}
209
+ material={materials.material_Material_kuka_orange}
210
+ />
211
+ </group>
212
+ </group>
213
+ </animated.group>
214
+ <group name="link_1" position={[0, 0.236, 0]}>
215
+ <group name="visuals001">
216
+ <mesh
217
+ name="visuals001_1"
218
+ castShadow
219
+ receiveShadow
220
+ geometry={nodes.visuals001_1.geometry}
221
+ material={materials.material_Material_kuka_black}
222
+ />
223
+ <mesh
224
+ name="visuals001_2"
225
+ castShadow
226
+ receiveShadow
227
+ geometry={nodes.visuals001_2.geometry}
228
+ material={materials.material_Material_kuka_orange}
229
+ />
230
+ <mesh
231
+ name="visuals001_3"
232
+ castShadow
233
+ receiveShadow
234
+ geometry={nodes.visuals001_3.geometry}
235
+ material={materials.material_Material_rubber}
236
+ />
237
+ <mesh
238
+ name="visuals001_4"
239
+ castShadow
240
+ receiveShadow
241
+ geometry={nodes.visuals001_4.geometry}
242
+ material={materials.material_Material_metal_black}
243
+ />
244
+ <mesh
245
+ name="visuals001_5"
246
+ castShadow
247
+ receiveShadow
248
+ geometry={nodes.visuals001_5.geometry}
249
+ material={materials.material_Material_aluminium}
250
+ />
251
+ <mesh
252
+ name="visuals001_6"
253
+ castShadow
254
+ receiveShadow
255
+ geometry={nodes.visuals001_6.geometry}
256
+ material={materials.material_Material_rubber_black}
257
+ />
258
+ <mesh
259
+ name="visuals001_7"
260
+ castShadow
261
+ receiveShadow
262
+ geometry={nodes.visuals001_7.geometry}
263
+ material={materials.material_Material_stainless_steel}
264
+ />
265
+ </group>
266
+ </group>
267
+ </animated.group>
268
+ <group name="link_0">
269
+ <group name="visuals">
270
+ <mesh
271
+ name="visuals_1"
272
+ castShadow
273
+ receiveShadow
274
+ geometry={nodes.visuals_1.geometry}
275
+ material={materials.material_Material_kuka_black}
276
+ />
277
+ <mesh
278
+ name="visuals_2"
279
+ castShadow
280
+ receiveShadow
281
+ geometry={nodes.visuals_2.geometry}
282
+ material={materials.material_Material_metal_black}
283
+ />
284
+ </group>
285
+ </group>
286
+ </group>
287
+ </group>
288
+ </group>
289
+ </>
290
+ )
291
+ }