@wandelbots/wandelbots-js-react-components 1.3.1 → 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 (77) hide show
  1. package/package.json +18 -7
  2. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +44 -0
  3. package/src/components/3d-viewport/PresetEnvironment.tsx +78 -0
  4. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +54 -0
  5. package/src/components/LoadingButton.stories.tsx +61 -0
  6. package/src/components/LoadingButton.tsx +19 -0
  7. package/src/components/LoadingCover.tsx +75 -0
  8. package/src/components/ThemeSelect.tsx +49 -0
  9. package/src/components/VelocitySlider.stories.tsx +32 -0
  10. package/src/components/VelocitySlider.tsx +52 -0
  11. package/src/components/jogging/JoggingCartesianAxisControl.stories.tsx +41 -0
  12. package/src/components/jogging/JoggingCartesianAxisControl.tsx +127 -0
  13. package/src/components/jogging/JoggingCartesianTab.tsx +265 -0
  14. package/src/components/jogging/JoggingCartesianValues.tsx +45 -0
  15. package/src/components/jogging/JoggingFreedriveTab.tsx +9 -0
  16. package/src/components/jogging/JoggingJointLimitDetector.tsx +51 -0
  17. package/src/components/jogging/JoggingJointRotationControl.stories.tsx +38 -0
  18. package/src/components/jogging/JoggingJointRotationControl.tsx +197 -0
  19. package/src/components/jogging/JoggingJointTab.tsx +93 -0
  20. package/src/components/jogging/JoggingJointValues.tsx +45 -0
  21. package/src/components/jogging/JoggingOptions.tsx +96 -0
  22. package/src/components/jogging/JoggingPanel.stories.tsx +26 -0
  23. package/src/components/jogging/JoggingPanel.tsx +148 -0
  24. package/src/components/jogging/JoggingStore.tsx +294 -0
  25. package/src/components/jogging/JoggingVelocitySlider.tsx +56 -0
  26. package/src/components/robots/ABB_1200_07_7.tsx +123 -0
  27. package/src/components/robots/AxisConfig.ts +3 -0
  28. package/src/components/robots/DHRobot.tsx +129 -0
  29. package/src/components/robots/FANUC_ARC_Mate_100iD.tsx +187 -0
  30. package/src/components/robots/FANUC_ARC_Mate_120iD.tsx +187 -0
  31. package/src/components/robots/FANUC_CRX10iA.tsx +167 -0
  32. package/src/components/robots/FANUC_CRX25iA.tsx +167 -0
  33. package/src/components/robots/FANUC_CRX25iAL.tsx +178 -0
  34. package/src/components/robots/KUKA_KR210_R2700.tsx +291 -0
  35. package/src/components/robots/KUKA_KR270_R2700.tsx +244 -0
  36. package/src/components/robots/RobotAnimator.tsx +83 -0
  37. package/src/components/robots/SupportedRobot.tsx +131 -0
  38. package/src/components/robots/UniversalRobots_UR10.tsx +112 -0
  39. package/src/components/robots/UniversalRobots_UR10e.tsx +275 -0
  40. package/src/components/robots/UniversalRobots_UR3.tsx +112 -0
  41. package/src/components/robots/UniversalRobots_UR3e.tsx +112 -0
  42. package/src/components/robots/UniversalRobots_UR5.tsx +111 -0
  43. package/src/components/robots/UniversalRobots_UR5e.tsx +280 -0
  44. package/src/components/robots/Yaskawa_AR1440.tsx +152 -0
  45. package/src/components/robots/Yaskawa_AR1730.tsx +165 -0
  46. package/src/components/robots/Yaskawa_AR2010.tsx +159 -0
  47. package/src/components/robots/Yaskawa_AR3120.tsx +160 -0
  48. package/src/components/robots/Yaskawa_AR900.tsx +121 -0
  49. package/src/components/utils/converters.ts +23 -0
  50. package/src/components/utils/errorHandling.ts +30 -0
  51. package/src/components/utils/hooks.tsx +54 -0
  52. package/src/components/utils/robotTreeQuery.ts +27 -0
  53. package/src/components/wandelscript-editor/WandelscriptEditor.stories.tsx +45 -0
  54. package/src/components/wandelscript-editor/WandelscriptEditor.tsx +114 -0
  55. package/src/components/wandelscript-editor/wandelscript.tmLanguage.ts +62 -0
  56. package/src/declarations.d.ts +10 -0
  57. package/src/i18n/config.ts +27 -0
  58. package/src/i18n/locales/de/translations.json +12 -0
  59. package/src/i18n/locales/en/translations.json +12 -0
  60. package/src/icons/arrowForwardFilled.tsx +7 -0
  61. package/src/icons/axis-x.svg +3 -0
  62. package/src/icons/axis-y.svg +3 -0
  63. package/src/icons/axis-z.svg +3 -0
  64. package/src/icons/expandFilled.tsx +11 -0
  65. package/src/icons/home.tsx +12 -0
  66. package/src/icons/index.ts +6 -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
@@ -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
+ }
@@ -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
+ }