@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,187 @@
1
+ import { useGLTF } from "@react-three/drei"
2
+ import type * as THREE from "three"
3
+ import type { RobotProps } from "./SupportedRobot"
4
+ import RobotAnimator from "./RobotAnimator"
5
+ import { animated } from "@react-spring/three"
6
+
7
+ export function FANUC_ARC_Mate_100iD({
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
+ const rotationOffsets = [0, Math.PI / 2, 0, 0, 0, 0]
16
+
17
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
18
+ jointObjects.forEach(
19
+ (object, index) =>
20
+ (object.rotation.y = jointValues[index]! + rotationOffsets[index]!),
21
+ )
22
+ }
23
+
24
+ return (
25
+ <>
26
+ <RobotAnimator
27
+ connectedMotionGroup={connectedMotionGroup}
28
+ robotRootObjectName="Scene"
29
+ onRotationChanged={setRotation}
30
+ />
31
+ <group {...props} dispose={null}>
32
+ <group name="Scene">
33
+ <group name="M10iD" rotation={[Math.PI / 2, 0, 0]}>
34
+ <animated.group name="M10iD_J01" rotation={[-Math.PI / 2, 0, 0]}>
35
+ <animated.group
36
+ name="M10iD_J02"
37
+ position={[0.075, 0, 0]}
38
+ rotation={[Math.PI / 2, Math.PI / 2, 0]}
39
+ >
40
+ <animated.group name="M10iD_J03" position={[0.64, 0, 0]}>
41
+ <animated.group
42
+ name="M10iD_J04"
43
+ position={[0.195, 0, 0]}
44
+ rotation={[-Math.PI / 2, 0, 0]}
45
+ >
46
+ <animated.group
47
+ name="M10iD_J05"
48
+ position={[0, -0.7, 0]}
49
+ rotation={[Math.PI / 2, 0, 0]}
50
+ >
51
+ <animated.group
52
+ name="M10iD_J06"
53
+ rotation={[-Math.PI / 2, 0, 0]}
54
+ >
55
+ <group
56
+ name="M10iD_FLG"
57
+ position={[0, -0.075, 0]}
58
+ rotation={[-Math.PI, 0, 0]}
59
+ />
60
+ <mesh
61
+ name="M10iD_L06"
62
+ castShadow
63
+ receiveShadow
64
+ geometry={nodes.M10iD_L06.geometry}
65
+ material={materials.Fanuc_BlackMetal_AO}
66
+ position={[-0.835, 0.775, 0]}
67
+ rotation={[0, 0, -Math.PI / 2]}
68
+ />
69
+ </animated.group>
70
+ <mesh
71
+ name="M10iD_L05"
72
+ castShadow
73
+ receiveShadow
74
+ geometry={nodes.M10iD_L05.geometry}
75
+ material={materials.Fanuc_BlackMetal_AO}
76
+ position={[-0.835, 0, -0.775]}
77
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
78
+ />
79
+ </animated.group>
80
+ <group
81
+ name="M10iD_L04"
82
+ position={[-0.835, 0.075, 0]}
83
+ rotation={[0, 0, -Math.PI / 2]}
84
+ >
85
+ <mesh
86
+ name="Mesh_654"
87
+ castShadow
88
+ receiveShadow
89
+ geometry={nodes.Mesh_654.geometry}
90
+ material={materials.Fanuc_Yellow_Textured_AO}
91
+ />
92
+ <mesh
93
+ name="Mesh_654_1"
94
+ castShadow
95
+ receiveShadow
96
+ geometry={nodes.Mesh_654_1.geometry}
97
+ material={materials.Fanuc_BlackMetal_AO}
98
+ />
99
+ </group>
100
+ </animated.group>
101
+ <group
102
+ name="M10iD_L03"
103
+ position={[-0.64, 0, -0.075]}
104
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
105
+ >
106
+ <mesh
107
+ name="Mesh_378"
108
+ castShadow
109
+ receiveShadow
110
+ geometry={nodes.Mesh_378.geometry}
111
+ material={materials.Material_1_AO}
112
+ />
113
+ <mesh
114
+ name="Mesh_378_1"
115
+ castShadow
116
+ receiveShadow
117
+ geometry={nodes.Mesh_378_1.geometry}
118
+ material={materials.Fanuc_Yellow_Textured_AO}
119
+ />
120
+ <mesh
121
+ name="Mesh_378_2"
122
+ castShadow
123
+ receiveShadow
124
+ geometry={nodes.Mesh_378_2.geometry}
125
+ material={materials.Fanuc_BlackMetal_AO}
126
+ />
127
+ </group>
128
+ </animated.group>
129
+ <group
130
+ name="M10iD_L02"
131
+ position={[0, 0, -0.075]}
132
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
133
+ >
134
+ <mesh
135
+ name="Mesh_358"
136
+ castShadow
137
+ receiveShadow
138
+ geometry={nodes.Mesh_358.geometry}
139
+ material={materials.Fanuc_Yellow_Textured_AO}
140
+ />
141
+ <mesh
142
+ name="Mesh_358_1"
143
+ castShadow
144
+ receiveShadow
145
+ geometry={nodes.Mesh_358_1.geometry}
146
+ material={materials.Fanuc_BlackMetal_AO}
147
+ />
148
+ </group>
149
+ </animated.group>
150
+ <group name="M10iD_L01">
151
+ <mesh
152
+ name="Mesh_356"
153
+ castShadow
154
+ receiveShadow
155
+ geometry={nodes.Mesh_356.geometry}
156
+ material={materials.Fanuc_Yellow_Textured_AO}
157
+ />
158
+ <mesh
159
+ name="Mesh_356_1"
160
+ castShadow
161
+ receiveShadow
162
+ geometry={nodes.Mesh_356_1.geometry}
163
+ material={materials.Material_1_AO}
164
+ />
165
+ <mesh
166
+ name="Mesh_356_2"
167
+ castShadow
168
+ receiveShadow
169
+ geometry={nodes.Mesh_356_2.geometry}
170
+ material={materials.Fanuc_BlackMetal_AO}
171
+ />
172
+ </group>
173
+ </animated.group>
174
+ <mesh
175
+ name="M10iD_L00"
176
+ castShadow
177
+ receiveShadow
178
+ geometry={nodes.M10iD_L00.geometry}
179
+ material={materials.Fanuc_BlackMetal_AO}
180
+ rotation={[-Math.PI / 2, 0, 0]}
181
+ />
182
+ </group>
183
+ </group>
184
+ </group>
185
+ </>
186
+ )
187
+ }
@@ -0,0 +1,187 @@
1
+ import { useGLTF } from "@react-three/drei"
2
+ import type * as THREE from "three"
3
+ import type { RobotProps } from "./SupportedRobot"
4
+ import RobotAnimator from "./RobotAnimator"
5
+ import { animated } from "@react-spring/three"
6
+
7
+ export function FANUC_ARC_Mate_120iD({
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
+ const rotationOffsets = [0, Math.PI / 2, 0, 0, 0, 0]
16
+
17
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
18
+ jointObjects.forEach(
19
+ (object, index) =>
20
+ (object.rotation.y = jointValues[index]! + rotationOffsets[index]!),
21
+ )
22
+ }
23
+
24
+ return (
25
+ <>
26
+ <RobotAnimator
27
+ connectedMotionGroup={connectedMotionGroup}
28
+ robotRootObjectName="Scene"
29
+ onRotationChanged={setRotation}
30
+ />
31
+ <group {...props} dispose={null}>
32
+ <group name="Scene">
33
+ <group name="M10iD" rotation={[0, 0, 0]}>
34
+ <animated.group name="M20iD25_J00">
35
+ <animated.group
36
+ name="M20iD25_J01"
37
+ position={[0.075, 0, 0]}
38
+ rotation={[Math.PI / 2, Math.PI / 2, 0]}
39
+ >
40
+ <animated.group name="M20iD25_J02" position={[0.84, 0, 0]}>
41
+ <animated.group
42
+ name="M20iD25_J03"
43
+ position={[0.215, 0, 0]}
44
+ rotation={[-Math.PI / 2, 0, 0]}
45
+ >
46
+ <animated.group
47
+ name="M20iD25_J04"
48
+ position={[0, -0.89, 0]}
49
+ rotation={[Math.PI / 2, 0, 0]}
50
+ >
51
+ <animated.group
52
+ name="M20iD25_J05"
53
+ rotation={[-Math.PI / 2, 0, 0]}
54
+ >
55
+ <group
56
+ name="M20iD25_FLG"
57
+ position={[0, -0.09, 0]}
58
+ rotation={[-Math.PI, 0, 0]}
59
+ />
60
+ <mesh
61
+ name="M20iD25_L06"
62
+ castShadow
63
+ receiveShadow
64
+ geometry={nodes.M20iD25_L06.geometry}
65
+ material={materials.Fanuc_BlackMetal_AO}
66
+ position={[0, -0.09, 0]}
67
+ rotation={[Math.PI / 2, 0, Math.PI]}
68
+ />
69
+ </animated.group>
70
+ <mesh
71
+ name="M20iD25_L05"
72
+ castShadow
73
+ receiveShadow
74
+ geometry={nodes.M20iD25_L05.geometry}
75
+ material={materials.Fanuc_BlackMetal_AO}
76
+ rotation={[Math.PI, Math.PI / 2, 0]}
77
+ />
78
+ </animated.group>
79
+ <group
80
+ name="M20iD25_L04"
81
+ position={[0, -0.286, 0]}
82
+ rotation={[-Math.PI / 2, Math.PI / 2, 0]}
83
+ >
84
+ <mesh
85
+ name="Mesh_2"
86
+ castShadow
87
+ receiveShadow
88
+ geometry={nodes.Mesh_2.geometry}
89
+ material={materials.Fanuc_Yellow_Textured_AO}
90
+ />
91
+ <mesh
92
+ name="Mesh_2_1"
93
+ castShadow
94
+ receiveShadow
95
+ geometry={nodes.Mesh_2_1.geometry}
96
+ material={materials.Fanuc_BlackMetal_AO}
97
+ />
98
+ </group>
99
+ </animated.group>
100
+ <group
101
+ name="M20iD25_L03"
102
+ position={[0, 0.406, 0]}
103
+ rotation={[Math.PI, Math.PI / 2, 0]}
104
+ >
105
+ <mesh
106
+ name="Mesh_15"
107
+ castShadow
108
+ receiveShadow
109
+ geometry={nodes.Mesh_15.geometry}
110
+ material={materials.Fanuc_BlackMetal_AO}
111
+ />
112
+ <mesh
113
+ name="Mesh_15_1"
114
+ castShadow
115
+ receiveShadow
116
+ geometry={nodes.Mesh_15_1.geometry}
117
+ material={materials.Fanuc_Yellow_Textured_AO}
118
+ />
119
+ <mesh
120
+ name="Mesh_15_2"
121
+ castShadow
122
+ receiveShadow
123
+ geometry={nodes.Mesh_15_2.geometry}
124
+ material={materials.Material_9_AO}
125
+ />
126
+ </group>
127
+ </animated.group>
128
+ <group
129
+ name="M20iD25_L02"
130
+ position={[0, 0.505, -0.055]}
131
+ rotation={[-Math.PI, Math.PI / 2, 0]}
132
+ >
133
+ <mesh
134
+ name="Mesh_37"
135
+ castShadow
136
+ receiveShadow
137
+ geometry={nodes.Mesh_37.geometry}
138
+ material={materials.Fanuc_BlackMetal_AO}
139
+ />
140
+ <mesh
141
+ name="Mesh_37_1"
142
+ castShadow
143
+ receiveShadow
144
+ geometry={nodes.Mesh_37_1.geometry}
145
+ material={materials.Fanuc_Yellow_Textured_AO}
146
+ />
147
+ </group>
148
+ </animated.group>
149
+ <group name="M20iD25_L01" rotation={[-Math.PI / 2, 0, 0]}>
150
+ <mesh
151
+ name="Mesh_45"
152
+ castShadow
153
+ receiveShadow
154
+ geometry={nodes.Mesh_45.geometry}
155
+ material={materials.Material_9_AO}
156
+ />
157
+ <mesh
158
+ name="Mesh_45_1"
159
+ castShadow
160
+ receiveShadow
161
+ geometry={nodes.Mesh_45_1.geometry}
162
+ material={materials.Fanuc_Yellow_Textured_AO}
163
+ />
164
+ <mesh
165
+ name="Mesh_45_2"
166
+ castShadow
167
+ receiveShadow
168
+ geometry={nodes.Mesh_45_2.geometry}
169
+ material={materials.Fanuc_BlackMetal_AO}
170
+ />
171
+ </group>
172
+ </animated.group>
173
+ <mesh
174
+ name="M20iD25_L00"
175
+ castShadow
176
+ receiveShadow
177
+ geometry={nodes.M20iD25_L00.geometry}
178
+ material={materials.Fanuc_BlackMetal_AO}
179
+ position={[0, -0.425, 0]}
180
+ rotation={[-Math.PI / 2, 0, 0]}
181
+ />
182
+ </group>
183
+ </group>
184
+ </group>
185
+ </>
186
+ )
187
+ }
@@ -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 RobotAnimator from "./RobotAnimator"
5
+ import { animated } from "@react-spring/three"
6
+
7
+ export function FANUC_CRX10iA({ 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
+ rotation={[Math.PI / 2, Math.PI / 2, 0]}
33
+ >
34
+ <animated.group name="CRX10iA_J02" position={[0.54, 0, 0]}>
35
+ <animated.group
36
+ name="CRX10iA_J03"
37
+ rotation={[-Math.PI / 2, 0, 0]}
38
+ >
39
+ <animated.group
40
+ name="CRX10iA_J04"
41
+ position={[0, -0.54, 0]}
42
+ rotation={[Math.PI / 2, 0, 0]}
43
+ >
44
+ <animated.group
45
+ name="CRX10iA_J05"
46
+ position={[0, 0.15, 0]}
47
+ rotation={[-Math.PI / 2, 0, 0]}
48
+ >
49
+ <group
50
+ name="CRX10iA_FLG"
51
+ position={[0, -0.16, 0]}
52
+ rotation={[-Math.PI, 0, 0]}
53
+ />
54
+ <mesh
55
+ name="CRX10iA_L06"
56
+ castShadow
57
+ receiveShadow
58
+ geometry={nodes.CRX10iA_L06.geometry}
59
+ material={materials.Fanuc_BlackMetal}
60
+ position={[0, -0.16, 0]}
61
+ rotation={[0, 0, -Math.PI / 2]}
62
+ />
63
+ </animated.group>
64
+ <group
65
+ name="CRX10iA_L05"
66
+ position={[0, 0.15, 0]}
67
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
68
+ >
69
+ <mesh
70
+ name="J5CASING_UNIT001"
71
+ castShadow
72
+ receiveShadow
73
+ geometry={nodes.J5CASING_UNIT001.geometry}
74
+ material={materials.Fanuc_WhitePlastic}
75
+ />
76
+ <mesh
77
+ name="J5CASING_UNIT001_1"
78
+ castShadow
79
+ receiveShadow
80
+ geometry={nodes.J5CASING_UNIT001_1.geometry}
81
+ material={materials.Fanuc_Green}
82
+ />
83
+ </group>
84
+ </animated.group>
85
+ <group
86
+ name="CRX10iA_L04"
87
+ position={[0, -0.54, 0]}
88
+ rotation={[0, 0, -Math.PI / 2]}
89
+ >
90
+ <mesh
91
+ name="NAME_LABEL_CRX_10iA"
92
+ castShadow
93
+ receiveShadow
94
+ geometry={nodes.NAME_LABEL_CRX_10iA.geometry}
95
+ material={materials.Fanuc_RedPlastic}
96
+ />
97
+ <mesh
98
+ name="NAME_LABEL_CRX_10iA_1"
99
+ castShadow
100
+ receiveShadow
101
+ geometry={nodes.NAME_LABEL_CRX_10iA_1.geometry}
102
+ material={materials.Fanuc_BlackPlastic}
103
+ />
104
+ <mesh
105
+ name="NAME_LABEL_CRX_10iA_2"
106
+ castShadow
107
+ receiveShadow
108
+ geometry={nodes.NAME_LABEL_CRX_10iA_2.geometry}
109
+ material={materials.Fanuc_WhitePlastic}
110
+ />
111
+ </group>
112
+ </animated.group>
113
+ <mesh
114
+ name="CRX10iA_L03"
115
+ castShadow
116
+ receiveShadow
117
+ geometry={nodes.CRX10iA_L03.geometry}
118
+ material={materials.Fanuc_WhitePlastic}
119
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
120
+ />
121
+ </animated.group>
122
+ <mesh
123
+ name="CRX10iA_L02"
124
+ castShadow
125
+ receiveShadow
126
+ geometry={nodes.CRX10iA_L02.geometry}
127
+ material={materials.Fanuc_WhitePlastic}
128
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
129
+ />
130
+ </animated.group>
131
+ <group name="CRX10iA_L01" position={[0, -0.117, 0]}>
132
+ <mesh
133
+ name="J2BASE_UNIT001"
134
+ castShadow
135
+ receiveShadow
136
+ geometry={nodes.J2BASE_UNIT001.geometry}
137
+ material={materials.Fanuc_Green}
138
+ />
139
+ <mesh
140
+ name="J2BASE_UNIT001_1"
141
+ castShadow
142
+ receiveShadow
143
+ geometry={nodes.J2BASE_UNIT001_1.geometry}
144
+ material={materials.Fanuc_WhitePlastic}
145
+ />
146
+ <mesh
147
+ name="J2BASE_UNIT001_2"
148
+ castShadow
149
+ receiveShadow
150
+ geometry={nodes.J2BASE_UNIT001_2.geometry}
151
+ material={materials.Fanuc_GreenLED}
152
+ />
153
+ </group>
154
+ </animated.group>
155
+ <mesh
156
+ name="CRX10iA_L00"
157
+ castShadow
158
+ receiveShadow
159
+ geometry={nodes.CRX10iA_L00.geometry}
160
+ material={materials.Fanuc_BlackMetal}
161
+ position={[0, -0.245, 0]}
162
+ />
163
+ </group>
164
+ </group>
165
+ </>
166
+ )
167
+ }