diff --git a/xr/openxr_character_centric_movement/start_vr.gd b/xr/openxr_character_centric_movement/start_vr.gd index f3dc8af6d2..313eae0d19 100644 --- a/xr/openxr_character_centric_movement/start_vr.gd +++ b/xr/openxr_character_centric_movement/start_vr.gd @@ -24,11 +24,11 @@ func _ready(): DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED) # Connect the OpenXR events - xr_interface.connect("session_begun", _on_openxr_session_begun) - xr_interface.connect("session_visible", _on_openxr_visible_state) - xr_interface.connect("session_focussed", _on_openxr_focused_state) - xr_interface.connect("session_stopping", _on_openxr_stopping) - xr_interface.connect("pose_recentered", _on_openxr_pose_recentered) + xr_interface.session_begun.connect(_on_openxr_session_begun) + xr_interface.session_visible.connect(_on_openxr_visible_state) + xr_interface.session_focussed.connect(_on_openxr_focused_state) + xr_interface.session_stopping.connect(_on_openxr_stopping) + xr_interface.pose_recentered.connect(_on_openxr_pose_recentered) else: # We couldn't start OpenXR. print("OpenXR not instantiated!") diff --git a/xr/openxr_origin_centric_movement/start_vr.gd b/xr/openxr_origin_centric_movement/start_vr.gd index f3dc8af6d2..313eae0d19 100644 --- a/xr/openxr_origin_centric_movement/start_vr.gd +++ b/xr/openxr_origin_centric_movement/start_vr.gd @@ -24,11 +24,11 @@ func _ready(): DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED) # Connect the OpenXR events - xr_interface.connect("session_begun", _on_openxr_session_begun) - xr_interface.connect("session_visible", _on_openxr_visible_state) - xr_interface.connect("session_focussed", _on_openxr_focused_state) - xr_interface.connect("session_stopping", _on_openxr_stopping) - xr_interface.connect("pose_recentered", _on_openxr_pose_recentered) + xr_interface.session_begun.connect(_on_openxr_session_begun) + xr_interface.session_visible.connect(_on_openxr_visible_state) + xr_interface.session_focussed.connect(_on_openxr_focused_state) + xr_interface.session_stopping.connect(_on_openxr_stopping) + xr_interface.pose_recentered.connect(_on_openxr_pose_recentered) else: # We couldn't start OpenXR. print("OpenXR not instantiated!") diff --git a/xr/openxr_vehicle_movement/.gitattributes b/xr/openxr_vehicle_movement/.gitattributes new file mode 100644 index 0000000000..8ad74f78d9 --- /dev/null +++ b/xr/openxr_vehicle_movement/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/xr/openxr_vehicle_movement/.gitignore b/xr/openxr_vehicle_movement/.gitignore new file mode 100644 index 0000000000..4709183670 --- /dev/null +++ b/xr/openxr_vehicle_movement/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/xr/openxr_vehicle_movement/InfoUI.gd b/xr/openxr_vehicle_movement/InfoUI.gd new file mode 100644 index 0000000000..c321229ce0 --- /dev/null +++ b/xr/openxr_vehicle_movement/InfoUI.gd @@ -0,0 +1,8 @@ +extends CanvasLayer + +func set_velocity(p_velocity : float): + %Velocity.text = "Velocity: %0.2f kmph (%0.2f m/s)" % [ p_velocity * 3.6, p_velocity ] + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + %FPS.text = "FPS: " + str(Engine.get_frames_per_second()) diff --git a/xr/openxr_vehicle_movement/InfoUI.tscn b/xr/openxr_vehicle_movement/InfoUI.tscn new file mode 100644 index 0000000000..c7151a96a6 --- /dev/null +++ b/xr/openxr_vehicle_movement/InfoUI.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=2 format=3 uid="uid://dal5i1c6mh07h"] + +[ext_resource type="Script" path="res://InfoUI.gd" id="1_sj0oq"] + +[node name="InfoUI" type="CanvasLayer"] +script = ExtResource("1_sj0oq") + +[node name="ColorRect" type="ColorRect" parent="."] +custom_minimum_size = Vector2(512, 256) +offset_right = 40.0 +offset_bottom = 40.0 +color = Color(0.341176, 0.580392, 0.368627, 1) + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +offset_left = 25.0 +offset_top = 10.0 +offset_right = 499.0 +offset_bottom = 158.0 + +[node name="FPS" type="Label" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 32 +text = "FPS: 000" + +[node name="Velocity" type="Label" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 32 +text = "Velocity: 000" diff --git a/xr/openxr_vehicle_movement/README.md b/xr/openxr_vehicle_movement/README.md new file mode 100644 index 0000000000..67101e9bbf --- /dev/null +++ b/xr/openxr_vehicle_movement/README.md @@ -0,0 +1,67 @@ +# XR Vehicle Movement demo + +This is a demo for an OpenXR project where the player is positioned in a vehicle. + +Godot version: 4.2.x + +Language: GDScript + +Renderer: compatibility + +## How does it work? + +Controlling a vehicle in VR is a bit of a special case. +Modern VR setups are all about freely walking around your room. +With vehicles however your player is confined in a small space, and you want to ensure the player isn't standing up in their virtual seat. +You do want the player to have some freedom of motion so they can easily look around. + +There are two ways to ensure the player is in the right spot. + +The first is calling [XRServer.center_on_hmd](https://docs.godotengine.org/en/stable/classes/class_xrserver.html#class-xrserver-method-center-on-hmd) with `rotation_mode` set to `XRServer.RESET_BUT_KEEP_TILT` and `keep_height` set to false. This will place the `XRCamera3D` node at the center of your `XROrigin3D` node and allows you to place the origin node where the players head should be. You use this while keeping the reference space set to the default `Stage` mode. +You will need to react to the [pose_recentered](https://docs.godotengine.org/en/stable/classes/class_openxrinterface.html#signals) signal when the user requests to recenter themselves. +This approach is useful when you switch between driving a vehicle and freely walking around. You can use `center_on_hmd` with `keep_height` set to true to switch back to roomscale mode. + +The second option we use in this demo, here we leave it up to the XR runtime to handle centering our headset. To enable this we simply set the OpenXR reference space to `Local`: + +![Screenshot](screenshots/openxr_settings.png) + +In this mode the headset will use the players head position as the center of the tracking space. +Behavior can be slighly different between different XR runtimes, some will take the position at game start, others will remember the position accross gaming sessions. +When the user triggers a recenter this is automatically handled by the headset. We do still get at `pose_recentered` signal but do not need to react to it. + +The second option is preferable for games that only work in this mode. + +## Input and the action map + +This demo uses Godots standard input map to allow for keyboard and gamepad input. + +There is also an action map setup so you can use the XR controllers. +Move your hands close enough to the steering wheel so they grab the wheel, +this will disable traditional input and enable you to control the steering wheel with your hands. +You can then use the trigger on the left controller to accellerate, and the trigger on the right controller to break. + +The way the steering works in XR mode is that we take the position of the hands in the local space of the steering wheel. +We then get the vector from the left hand to the right hand. +If only one controller is used we take the vector relative to the center of the steering wheel. +Now we simply calculate the angle of that vector to get our steering angle. + +## Running on PCVR + +This project can be run as normal for PCVR. Ensure that an OpenXR runtime has been installed. +This project has been tested with the Oculus client and SteamVR OpenXR runtimes. +Note that Godot currently can't run using the WMR OpenXR runtime. Install SteamVR with WMR support. + +## Running on standalone VR + +You must install the Android build templates and OpenXR loader plugin and configure an export template for your device. +Please follow [the instructions for deploying on Android in the manual](https://docs.godotengine.org/en/stable/tutorials/xr/deploying_to_android.html). + +## Additional licenses + +See license files in the asset subfolder for any assets that have additional licenses. + +## Screenshots + +![Screenshot](screenshots/vehicle_demo.png) + +![Video](https://youtu.be/zhwjFSqNifE) diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheel.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheel.mesh new file mode 100644 index 0000000000..e405458948 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheel.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheelAxle.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheelAxle.mesh new file mode 100644 index 0000000000..07552630d6 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheelAxle.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheelHub.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheelHub.mesh new file mode 100644 index 0000000000..0560dc7c58 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/FrontWheelHub.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/RearWheel.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/RearWheel.mesh new file mode 100644 index 0000000000..ed9a2e9570 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/RearWheel.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/RearWheelHub.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/RearWheelHub.mesh new file mode 100644 index 0000000000..4791519c9a Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/RearWheelHub.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelBracket.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelBracket.mesh new file mode 100644 index 0000000000..dd4045941a Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelBracket.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelCenter.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelCenter.mesh new file mode 100644 index 0000000000..81baafa542 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelCenter.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelDisplay.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelDisplay.mesh new file mode 100644 index 0000000000..8a4a81e42e Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelDisplay.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelDisplayHolder.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelDisplayHolder.mesh new file mode 100644 index 0000000000..3580dced34 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelDisplayHolder.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelRing.mesh b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelRing.mesh new file mode 100644 index 0000000000..ac0a9c8795 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/SeparatedMeshes/SteeringWheelRing.mesh differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/license.txt b/xr/openxr_vehicle_movement/assets/gokart/license.txt new file mode 100644 index 0000000000..30e1564499 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/license.txt @@ -0,0 +1,11 @@ +Model Information: +* title: Gokart +* source: https://sketchfab.com/3d-models/gokart-b60878a0f04d43d388dd2a57be419a72 +* author: AwEsZ (https://sketchfab.com/AwEsZ) + +Model License: +* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) +* requirements: Author must be credited. Commercial use is allowed. + +If you use this 3D model in your project be sure to copy paste this credit wherever you share it: +This work is based on "Gokart" (https://sketchfab.com/3d-models/gokart-b60878a0f04d43d388dd2a57be419a72) by AwEsZ (https://sketchfab.com/AwEsZ) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Cube.014__0.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Cube.014__0.tres new file mode 100644 index 0000000000..d323ba50d8 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Cube.014__0.tres @@ -0,0 +1,6 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://dqaeublsfgxet"] + +[resource] +resource_name = "Cube.014__0" +vertex_color_use_as_albedo = true +roughness = 0.6 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.001.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.001.tres new file mode 100644 index 0000000000..8436702c8e --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.001.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://bqhatpgnbfayc"] + +[resource] +resource_name = "Material.001" +vertex_color_use_as_albedo = true +albedo_color = Color(0.906332, 0.906332, 0.906332, 1) +roughness = 0.821115 +emission_enabled = true +emission = Color(0.594203, 0.594203, 0.594203, 1) diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.002.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.002.tres new file mode 100644 index 0000000000..bbdf565260 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.002.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://cv2hslabq63af"] + +[resource] +resource_name = "Material.002" +vertex_color_use_as_albedo = true +albedo_color = Color(0.345106, 0.345106, 0.345106, 1) +roughness = 0.978178 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.003.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.003.tres new file mode 100644 index 0000000000..b2253d97a4 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.003.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://c768tjddf3eq"] + +[resource] +resource_name = "Material.003" +vertex_color_use_as_albedo = true +albedo_color = Color(0.409976, 0.514569, 0.985366, 1) +roughness = 0.276188 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.004.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.004.tres new file mode 100644 index 0000000000..05c577414d --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.004.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://thtm6w6l6x3g"] + +[resource] +resource_name = "Material.004" +vertex_color_use_as_albedo = true +albedo_color = Color(0.519994, 0.519994, 0.519994, 1) +roughness = 0.939756 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.005.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.005.tres new file mode 100644 index 0000000000..e7d453f76e --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.005.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://vxoj0lynkbts"] + +[resource] +resource_name = "Material.005" +vertex_color_use_as_albedo = true +albedo_color = Color(0.129709, 0.129709, 0.129709, 1) +roughness = 0.996586 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.006.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.006.tres new file mode 100644 index 0000000000..8b31907ea3 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.006.tres @@ -0,0 +1,8 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://csd0uv3t1t6ul"] + +[resource] +resource_name = "Material.006" +vertex_color_use_as_albedo = true +albedo_color = Color(0.635294, 0.635294, 0.635294, 1) +metallic = 0.73 +roughness = 0.12 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.007.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.007.tres new file mode 100644 index 0000000000..4212589685 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.007.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://usphfm8cljtl"] + +[resource] +resource_name = "Material.007" +vertex_color_use_as_albedo = true +albedo_color = Color(0.339284, 0.339284, 0.339284, 1) +roughness = 0.978932 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.008.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.008.tres new file mode 100644 index 0000000000..113916c0bc --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.008.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://2e3ewnm4kmwc"] + +[resource] +resource_name = "Material.008" +vertex_color_use_as_albedo = true +albedo_color = Color(0.822033, 0.822033, 0.822033, 1) +roughness = 0.81088 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.009.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.009.tres new file mode 100644 index 0000000000..3ac4be2cfe --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.009.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://buhaihrem52b"] + +[resource] +resource_name = "Material.009" +vertex_color_use_as_albedo = true +albedo_color = Color(0.595431, 0.595431, 0.595431, 1) +roughness = 0.929957 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.010.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.010.tres new file mode 100644 index 0000000000..dbb14270fe --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.010.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://dy8fo1wov4fb2"] + +[resource] +resource_name = "Material.010" +vertex_color_use_as_albedo = true +albedo_color = Color(0.906332, 0.906332, 0.906332, 1) +roughness = 0.747018 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.011.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.011.tres new file mode 100644 index 0000000000..91024532a8 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.011.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://da1iluolhagux"] + +[resource] +resource_name = "Material.011" +vertex_color_use_as_albedo = true +albedo_color = Color(0.653458, 0.653458, 0.653458, 1) +roughness = 0.914013 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.012.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.012.tres new file mode 100644 index 0000000000..8a5d7fe5da --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.012.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://52y8qfvj7pys"] + +[resource] +resource_name = "Material.012" +vertex_color_use_as_albedo = true +albedo_color = Color(0.448832, 0.448832, 0.448832, 1) +roughness = 0.958275 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.013.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.013.tres new file mode 100644 index 0000000000..c133bb40a9 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.013.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://d4jv657hekp3u"] + +[resource] +resource_name = "Material.013" +vertex_color_use_as_albedo = true +albedo_color = Color(0.61038, 0.61038, 0.61038, 1) +roughness = 0.919279 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.014.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.014.tres new file mode 100644 index 0000000000..e0731f6d5d --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.014.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://cwyqdq8n52kxf"] + +[resource] +resource_name = "Material.014" +vertex_color_use_as_albedo = true +albedo_color = Color(0.766543, 0.312911, 0.328656, 1) +roughness = 0.957246 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.015.nocull.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.015.nocull.tres new file mode 100644 index 0000000000..e2fccfa6e7 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.015.nocull.tres @@ -0,0 +1,8 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://2xqcil35ckmf"] + +[resource] +resource_name = "Material.015" +cull_mode = 2 +vertex_color_use_as_albedo = true +albedo_color = Color(0.691153, 0.691153, 0.691153, 1) +roughness = 0.902621 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.015.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.015.tres new file mode 100644 index 0000000000..15805ee2f8 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.015.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://0y4xq7jk6jgw"] + +[resource] +resource_name = "Material.015" +vertex_color_use_as_albedo = true +albedo_color = Color(0.691153, 0.691153, 0.691153, 1) +roughness = 0.902621 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.016.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.016.tres new file mode 100644 index 0000000000..c15a97946a --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.016.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://bgvmnvdrkutv7"] + +[resource] +resource_name = "Material.016" +vertex_color_use_as_albedo = true +albedo_color = Color(0.594224, 0.594224, 0.594224, 1) +roughness = 0.930269 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.017.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.017.tres new file mode 100644 index 0000000000..ef7b8b841c --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.017.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://cstrxte8w75kg"] + +[resource] +resource_name = "Material.017" +vertex_color_use_as_albedo = true +albedo_color = Color(0.172139, 0.172139, 0.172139, 1) +roughness = 0.994392 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.018.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.018.tres new file mode 100644 index 0000000000..fac91ab7f4 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.018.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://boblofr4cshco"] + +[resource] +resource_name = "Material.018" +vertex_color_use_as_albedo = true +albedo_color = Color(0.603091, 0.603091, 0.603091, 1) +roughness = 0.915597 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.019.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.019.tres new file mode 100644 index 0000000000..0b19176a50 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.019.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://mob83pxu5ilv"] + +[resource] +resource_name = "Material.019" +vertex_color_use_as_albedo = true +albedo_color = Color(0.704722, 0.743734, 0.610886, 1) +roughness = 0.891021 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.020.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.020.tres new file mode 100644 index 0000000000..36200be44b --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.020.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://b1sxts1b0crfs"] + +[resource] +resource_name = "Material.020" +vertex_color_use_as_albedo = true +albedo_color = Color(0.394256, 0.394256, 0.394256, 1) +roughness = 0.971182 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.021.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.021.tres new file mode 100644 index 0000000000..23c6d59738 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.021.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://cyswii48wfoct"] + +[resource] +resource_name = "Material.021" +vertex_color_use_as_albedo = true +albedo_color = Color(0.813327, 0.813327, 0.813327, 1) +roughness = 0.859874 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.022.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.022.tres new file mode 100644 index 0000000000..4de6b83e43 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.022.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://b7iab86bemdgw"] + +[resource] +resource_name = "Material.022" +vertex_color_use_as_albedo = true +albedo_color = Color(0.42666, 0.42666, 0.42666, 1) +roughness = 0.965939 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.023.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.023.tres new file mode 100644 index 0000000000..56f095431f --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.023.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://d2rqx5bspsj21"] + +[resource] +resource_name = "Material.023" +vertex_color_use_as_albedo = true +albedo_color = Color(0.646661, 0.646661, 0.646661, 1) +roughness = 0.91598 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.024.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.024.tres new file mode 100644 index 0000000000..78b865d432 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.024.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://kqy0u8xxds35"] + +[resource] +resource_name = "Material.024" +vertex_color_use_as_albedo = true +albedo_color = Color(0.60166, 0.77659, 0.790989, 1) +roughness = 0.598928 diff --git a/xr/openxr_vehicle_movement/assets/gokart/materials/Material.tres b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.tres new file mode 100644 index 0000000000..5fbea598b5 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/materials/Material.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://d2bj1ek3oad08"] + +[resource] +resource_name = "Material" +vertex_color_use_as_albedo = true +albedo_color = Color(0.411765, 0.513726, 0.984314, 1) +roughness = 0.440603 diff --git a/xr/openxr_vehicle_movement/assets/gokart/scene.bin b/xr/openxr_vehicle_movement/assets/gokart/scene.bin new file mode 100644 index 0000000000..29dc4f4256 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/gokart/scene.bin differ diff --git a/xr/openxr_vehicle_movement/assets/gokart/scene.gltf b/xr/openxr_vehicle_movement/assets/gokart/scene.gltf new file mode 100644 index 0000000000..a273ca9863 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/scene.gltf @@ -0,0 +1,6559 @@ +{ + "accessors": [ + { + "bufferView": 2, + "componentType": 5126, + "count": 862, + "max": [ + 0.8249877691268921, + 1.3200746774673462, + 1.1163392066955566 + ], + "min": [ + -0.8033877015113831, + -1.3200747966766357, + -0.013272421434521675 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 10344, + "componentType": 5126, + "count": 862, + "max": [ + 0.9964337348937988, + 0.9962719678878784, + 0.9984961152076721 + ], + "min": [ + -0.9947590231895447, + -0.9962781071662903, + -0.9988448619842529 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 862, + "max": [ + 1.053591251373291, + 1.2252352237701416 + ], + "min": [ + -0.08379921317100525, + -0.21330994367599487 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "componentType": 5125, + "count": 3570, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 20688, + "componentType": 5126, + "count": 381, + "max": [ + 1.02376389503479, + 0.8785051107406616, + 0.09321251511573792 + ], + "min": [ + -0.8254334926605225, + 0.41743144392967224, + -0.4176328182220459 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 25260, + "componentType": 5126, + "count": 381, + "max": [ + 0.9698185324668884, + 0.9997503757476807, + 0.9981429576873779 + ], + "min": [ + -0.9875249266624451, + -1.0, + -0.9925892353057861 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 6896, + "componentType": 5126, + "count": 381, + "max": [ + 0.875, + 1.0002495050430298 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 14280, + "componentType": 5125, + "count": 1302, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 29832, + "componentType": 5126, + "count": 381, + "max": [ + 1.02376389503479, + 0.8785051107406616, + 0.09321251511573792 + ], + "min": [ + -0.8254334926605225, + 0.41743144392967224, + -0.4176328182220459 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 34404, + "componentType": 5126, + "count": 381, + "max": [ + 0.9698185324668884, + 0.9997503757476807, + 0.9981429576873779 + ], + "min": [ + -0.9875249266624451, + -1.0, + -0.9925892353057861 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 9944, + "componentType": 5126, + "count": 381, + "max": [ + 0.875, + 1.0002495050430298 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 19488, + "componentType": 5125, + "count": 1302, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 38976, + "componentType": 5126, + "count": 497, + "max": [ + 0.13246160745620728, + 3.456084728240967, + 1.0 + ], + "min": [ + -0.6087933778762817, + -3.7197837829589844, + 0.010033965110778809 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 44940, + "componentType": 5126, + "count": 497, + "max": [ + 0.9912498593330383, + 0.9745200872421265, + 0.9916560053825378 + ], + "min": [ + -0.9988044500350952, + -0.9745216369628906, + -0.9916757941246033 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 12992, + "componentType": 5126, + "count": 497, + "max": [ + 0.8750000596046448, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 24696, + "componentType": 5125, + "count": 1620, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 50904, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0000007152557373, + 15.885419845581055 + ], + "min": [ + -1.0, + -1.0000005960464478, + -15.264325141906738 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 52464, + "componentType": 5126, + "count": 130, + "max": [ + 0.7278878688812256, + 0.7278876304626465, + 0.6856968402862549 + ], + "min": [ + -0.7278878092765808, + -0.7278876304626465, + -0.6856968998908997 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 16968, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 31176, + "componentType": 5125, + "count": 372, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 54024, + "componentType": 5126, + "count": 1055, + "max": [ + 1.0, + 1.0, + 0.9846360683441162 + ], + "min": [ + -1.0, + -1.0, + -0.009332358837127686 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 66684, + "componentType": 5126, + "count": 1055, + "max": [ + 0.9999403357505798, + 0.9999402761459351, + 0.982266366481781 + ], + "min": [ + -0.9999403357505798, + -0.9999402761459351, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 18008, + "componentType": 5126, + "count": 1055, + "max": [ + 1.0, + 0.9681519865989685 + ], + "min": [ + 0.0, + 0.01012033224105835 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 32664, + "componentType": 5125, + "count": 3162, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 79344, + "componentType": 5126, + "count": 659, + "max": [ + 0.4986801743507385, + 0.49868011474609375, + 1.0123213529586792 + ], + "min": [ + -0.49868011474609375, + -0.49868011474609375, + 0.8602675199508667 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 87252, + "componentType": 5126, + "count": 659, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -0.2961041033267975 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 26448, + "componentType": 5126, + "count": 659, + "max": [ + 0.3743187189102173, + 0.3743186891078949 + ], + "min": [ + 0.12568122148513794, + 0.12568123638629913 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 45312, + "componentType": 5125, + "count": 1818, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 95160, + "componentType": 5126, + "count": 1132, + "max": [ + 1.0, + 1.0, + 0.9953175783157349 + ], + "min": [ + -1.0, + -1.0, + -0.44902297854423523 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 108744, + "componentType": 5126, + "count": 1132, + "max": [ + 0.9906752109527588, + 0.9906752705574036, + 0.982266366481781 + ], + "min": [ + -0.9906752705574036, + -0.9906752705574036, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 31720, + "componentType": 5126, + "count": 1132, + "max": [ + 1.0, + 0.9681519865989685 + ], + "min": [ + 0.0, + 0.01012033224105835 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 52584, + "componentType": 5125, + "count": 3354, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 122328, + "componentType": 5126, + "count": 591, + "max": [ + 0.4986801743507385, + 0.49868011474609375, + 1.0123213529586792 + ], + "min": [ + -0.49868011474609375, + -0.49868011474609375, + 0.8602675199508667 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 129420, + "componentType": 5126, + "count": 591, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -3.1187926197162597e-07 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 40776, + "componentType": 5126, + "count": 591, + "max": [ + 0.3743187189102173, + 0.3743186891078949 + ], + "min": [ + 0.12568122148513794, + 0.12568123638629913 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 66000, + "componentType": 5125, + "count": 1626, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 136512, + "componentType": 5126, + "count": 1055, + "max": [ + 1.0, + 1.0, + 0.9846360683441162 + ], + "min": [ + -1.0, + -1.0, + -0.009332358837127686 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 149172, + "componentType": 5126, + "count": 1055, + "max": [ + 0.9999403357505798, + 0.9999402761459351, + 0.982266366481781 + ], + "min": [ + -0.9999403357505798, + -0.9999402761459351, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 45504, + "componentType": 5126, + "count": 1055, + "max": [ + 1.0, + 0.9681519865989685 + ], + "min": [ + 0.0, + 0.01012033224105835 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 72504, + "componentType": 5125, + "count": 3162, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 161832, + "componentType": 5126, + "count": 659, + "max": [ + 0.4986801743507385, + 0.49868011474609375, + 1.0123213529586792 + ], + "min": [ + -0.49868011474609375, + -0.49868011474609375, + 0.8602675199508667 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 169740, + "componentType": 5126, + "count": 659, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -0.2961041033267975 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 53944, + "componentType": 5126, + "count": 659, + "max": [ + 0.3743187189102173, + 0.3743186891078949 + ], + "min": [ + 0.12568122148513794, + 0.12568123638629913 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 85152, + "componentType": 5125, + "count": 1818, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 177648, + "componentType": 5126, + "count": 648, + "max": [ + 1.0, + 1.0, + 0.9846360683441162 + ], + "min": [ + -1.0, + -1.0, + -0.4454529881477356 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 185424, + "componentType": 5126, + "count": 648, + "max": [ + 0.9906752109527588, + 0.9906752705574036, + 0.982266366481781 + ], + "min": [ + -0.9906752705574036, + -0.9906752705574036, + -0.9981490969657898 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 59216, + "componentType": 5126, + "count": 648, + "max": [ + 1.0, + 0.9681519865989685 + ], + "min": [ + 0.0, + 0.01012033224105835 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 92424, + "componentType": 5125, + "count": 1920, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 193200, + "componentType": 5126, + "count": 1075, + "max": [ + 0.5282424092292786, + 0.5282424092292786, + 1.0123213529586792 + ], + "min": [ + -0.5282424092292786, + -0.528242290019989, + -0.44902297854423523 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 206100, + "componentType": 5126, + "count": 1075, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 64400, + "componentType": 5126, + "count": 1075, + "max": [ + 0.8832862377166748, + 0.3832862973213196 + ], + "min": [ + 0.12568122148513794, + 0.11671378463506699 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 100104, + "componentType": 5125, + "count": 3060, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 219000, + "componentType": 5126, + "count": 664, + "max": [ + 1.1040267944335938, + 0.63873690366745, + 0.9954308867454529 + ], + "min": [ + -0.766518235206604, + -0.7071109414100647, + -0.11315156519412994 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 226968, + "componentType": 5126, + "count": 664, + "max": [ + 1.0, + 0.9999130368232727, + 0.9999688863754272 + ], + "min": [ + -0.99454665184021, + -0.9999130368232727, + -0.9995247721672058 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 73000, + "componentType": 5126, + "count": 664, + "max": [ + 0.9311351180076599, + 0.9442809820175171 + ], + "min": [ + 0.5354392528533936, + 0.223140150308609 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 112344, + "componentType": 5125, + "count": 2832, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 234936, + "componentType": 5126, + "count": 704, + "max": [ + 1.8098455667495728, + 1.8098467588424683, + 1.0 + ], + "min": [ + -1.809848666191101, + -1.8098474740982056, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 243384, + "componentType": 5126, + "count": 704, + "max": [ + 0.9951847791671753, + 0.9951847791671753, + 1.0 + ], + "min": [ + -0.9951847791671753, + -0.9951847791671753, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 78312, + "componentType": 5126, + "count": 704, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 123672, + "componentType": 5125, + "count": 1140, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 251832, + "componentType": 5126, + "count": 704, + "max": [ + 1.8098455667495728, + 1.8098467588424683, + 1.0 + ], + "min": [ + -1.809848666191101, + -1.8098474740982056, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 260280, + "componentType": 5126, + "count": 704, + "max": [ + 0.9951847791671753, + 0.9951847791671753, + 1.0 + ], + "min": [ + -0.9951847791671753, + -0.9951847791671753, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 83944, + "componentType": 5126, + "count": 704, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 128232, + "componentType": 5125, + "count": 1140, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 268728, + "componentType": 5126, + "count": 460, + "max": [ + 1.0, + 1.0, + 16.298887252807617 + ], + "min": [ + -1.0, + -10.052922248840332, + -4.404860973358154 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 274248, + "componentType": 5126, + "count": 460, + "max": [ + 0.9999988079071045, + 0.9988539218902588, + 0.9964308142662048 + ], + "min": [ + -0.9999988079071045, + -0.9934962391853333, + -0.9893510341644287 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 89576, + "componentType": 5126, + "count": 460, + "max": [ + 1.0, + 1.0000001192092896 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 132792, + "componentType": 5125, + "count": 2292, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 279768, + "componentType": 5126, + "count": 460, + "max": [ + 1.0, + 1.0, + 16.298887252807617 + ], + "min": [ + -1.0, + -10.052922248840332, + -4.404860973358154 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 285288, + "componentType": 5126, + "count": 460, + "max": [ + 0.9999988079071045, + 0.9988539218902588, + 0.9964308142662048 + ], + "min": [ + -0.9999988079071045, + -0.9934962391853333, + -0.9893510341644287 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 93256, + "componentType": 5126, + "count": 460, + "max": [ + 1.0, + 1.0000001192092896 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 141960, + "componentType": 5125, + "count": 2292, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 290808, + "componentType": 5126, + "count": 143, + "max": [ + 0.09829580783843994, + 0.09829580783843994, + -0.010773289948701859 + ], + "min": [ + -0.09829580783843994, + -0.09829580783843994, + -0.1335461437702179 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 292524, + "componentType": 5126, + "count": 143, + "max": [ + 0.9737197756767273, + 0.9828875660896301, + 0.9590505957603455 + ], + "min": [ + -0.9636142253875732, + -0.9828875660896301, + -0.98246169090271 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 96936, + "componentType": 5126, + "count": 143, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 151128, + "componentType": 5125, + "count": 540, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 294240, + "componentType": 5126, + "count": 143, + "max": [ + 0.09829580783843994, + 0.09829580783843994, + -0.010773289948701859 + ], + "min": [ + -0.09829580783843994, + -0.09829580783843994, + -0.1335461437702179 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 295956, + "componentType": 5126, + "count": 143, + "max": [ + 0.9737197756767273, + 0.9828875660896301, + 0.9590505957603455 + ], + "min": [ + -0.9636142253875732, + -0.9828875660896301, + -0.98246169090271 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 98080, + "componentType": 5126, + "count": 143, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 153288, + "componentType": 5125, + "count": 540, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 297672, + "componentType": 5126, + "count": 704, + "max": [ + 1.731586217880249, + 1.6264971494674683, + 30.38727569580078 + ], + "min": [ + -1.5214077234268188, + -1.6264970302581787, + -10.94917106628418 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 306120, + "componentType": 5126, + "count": 704, + "max": [ + 0.9951848387718201, + 0.9951847791671753, + 1.0 + ], + "min": [ + -0.9951847791671753, + -0.9951847791671753, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 99224, + "componentType": 5126, + "count": 704, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 155448, + "componentType": 5125, + "count": 1140, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 314568, + "componentType": 5126, + "count": 277, + "max": [ + 3.255586862564087, + 1.3983018398284912, + 1.7836925983428955 + ], + "min": [ + -1.7207510471343994, + -1.3983018398284912, + -1.1212427616119385 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 317892, + "componentType": 5126, + "count": 277, + "max": [ + 1.0, + 0.9983593225479126, + 0.9916445016860962 + ], + "min": [ + -1.0, + -0.9983593225479126, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 104856, + "componentType": 5126, + "count": 277, + "max": [ + 0.4568102955818176, + 0.8283178210258484 + ], + "min": [ + 0.31884288787841797, + 0.5523830652236938 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 160008, + "componentType": 5125, + "count": 972, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 321216, + "componentType": 5126, + "count": 148, + "max": [ + 1.0245811939239502, + 0.26561230421066284, + 1.9016286134719849 + ], + "min": [ + 0.48266133666038513, + -0.26561230421066284, + 1.6293200254440308 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 322992, + "componentType": 5126, + "count": 148, + "max": [ + 0.964332640171051, + 0.991445004940033, + 0.9993343949317932 + ], + "min": [ + -0.9726534485816956, + -0.9914449453353882, + -0.23027515411376953 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 107072, + "componentType": 5126, + "count": 148, + "max": [ + 0.5256460309028625, + 0.8283178210258484 + ], + "min": [ + 0.31884288787841797, + 0.5523830652236938 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 163896, + "componentType": 5125, + "count": 372, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 324768, + "componentType": 5126, + "count": 1275, + "max": [ + 0.8272410035133362, + 1.0, + 0.07599745690822601 + ], + "min": [ + -0.827241063117981, + -1.0, + -0.07599373161792755 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 340068, + "componentType": 5126, + "count": 1275, + "max": [ + 0.9961443543434143, + 0.9949285984039307, + 0.9964826107025146 + ], + "min": [ + -0.9961491823196411, + -0.994872510433197, + -0.9964851140975952 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 108256, + "componentType": 5126, + "count": 1275, + "max": [ + 1.0000873804092407, + 1.0 + ], + "min": [ + -0.0009330622851848602, + -0.002985298400744796 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 165384, + "componentType": 5125, + "count": 3840, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 355368, + "componentType": 5126, + "count": 48, + "max": [ + 0.21058940887451172, + 2.5850095748901367, + 0.16086280345916748 + ], + "min": [ + -0.21058928966522217, + -2.5850095748901367, + -0.16086256504058838 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 355944, + "componentType": 5126, + "count": 48, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 118456, + "componentType": 5126, + "count": 48, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 180744, + "componentType": 5125, + "count": 84, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 356520, + "componentType": 5126, + "count": 142, + "max": [ + 0.4471207857131958, + 1.0, + 0.16113978624343872 + ], + "min": [ + -0.8820879459381104, + -1.0, + -0.1611398160457611 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 358224, + "componentType": 5126, + "count": 142, + "max": [ + 0.9951847791671753, + 0.9951847791671753, + 1.0 + ], + "min": [ + -0.9951847791671753, + -0.9951847791671753, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 118840, + "componentType": 5126, + "count": 142, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 181080, + "componentType": 5125, + "count": 414, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 359928, + "componentType": 5126, + "count": 20, + "max": [ + 0.3273654282093048, + 0.8802446126937866, + 0.11742293834686279 + ], + "min": [ + -0.762332558631897, + -0.8802446126937866, + 0.11742293834686279 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 360168, + "componentType": 5126, + "count": 20, + "max": [ + -4.941665965318975e-10, + 0.0, + 1.0 + ], + "min": [ + -4.941665965318975e-10, + 0.0, + 1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 119976, + "componentType": 5126, + "count": 20, + "max": [ + 0.8415204882621765, + 0.7350305914878845 + ], + "min": [ + 0.6584795713424683, + 0.5149693489074707 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 182736, + "componentType": 5125, + "count": 54, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 360408, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0000007152557373, + 8.380526542663574 + ], + "min": [ + -1.000000238418579, + -1.0000005960464478, + -9.471946716308594 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 361968, + "componentType": 5126, + "count": 130, + "max": [ + 0.7278875708580017, + 0.7278876304626465, + 0.6856966018676758 + ], + "min": [ + -0.7278878688812256, + -0.7278876304626465, + -0.6856967210769653 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 120136, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 182952, + "componentType": 5125, + "count": 372, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 363528, + "componentType": 5126, + "count": 81, + "max": [ + 1.6047770977020264, + 1.435754418373108, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 364500, + "componentType": 5126, + "count": 81, + "max": [ + 0.9672935605049133, + 0.9672935009002686, + 0.9672934412956238 + ], + "min": [ + -0.9672934412956238, + -0.9672934412956238, + -0.9672934412956238 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 121176, + "componentType": 5126, + "count": 81, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 184440, + "componentType": 5125, + "count": 324, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 365472, + "componentType": 5126, + "count": 170, + "max": [ + 5.054455280303955, + 1.435754418373108, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.8490129709243774 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 367512, + "componentType": 5126, + "count": 170, + "max": [ + 1.0, + 0.9959201812744141, + 1.0 + ], + "min": [ + -1.0, + -0.9959201812744141, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 121824, + "componentType": 5126, + "count": 170, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 185736, + "componentType": 5125, + "count": 432, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 369552, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0000007152557373, + 0.7046995162963867 + ], + "min": [ + -1.0, + -1.0000005960464478, + -9.471946716308594 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 371112, + "componentType": 5126, + "count": 130, + "max": [ + 0.7278876304626465, + 0.7278876900672913, + 0.685696542263031 + ], + "min": [ + -0.7278878092765808, + -0.7278876900672913, + -0.6856966614723206 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 123184, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 187464, + "componentType": 5125, + "count": 372, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 372672, + "componentType": 5126, + "count": 163, + "max": [ + 1.0, + 1.0000007152557373, + 7.227802276611328 + ], + "min": [ + -1.0, + -1.0000005960464478, + -10.213605880737305 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 374628, + "componentType": 5126, + "count": 163, + "max": [ + 0.9362531304359436, + 0.9362528324127197, + 0.6856967210769653 + ], + "min": [ + -0.9362518787384033, + -0.9362521171569824, + -0.9041246771812439 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 124224, + "componentType": 5126, + "count": 163, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 188952, + "componentType": 5125, + "count": 564, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 376584, + "componentType": 5126, + "count": 48, + "max": [ + 0.2105894237756729, + 2.04664945602417, + 0.16086281836032867 + ], + "min": [ + -0.2727431356906891, + -2.04664945602417, + -0.16086257994174957 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 377160, + "componentType": 5126, + "count": 48, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 125528, + "componentType": 5126, + "count": 48, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 191208, + "componentType": 5125, + "count": 84, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 377736, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0000007152557373, + 8.380526542663574 + ], + "min": [ + -1.000000238418579, + -1.0000005960464478, + -9.471946716308594 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 379296, + "componentType": 5126, + "count": 130, + "max": [ + 0.7278875708580017, + 0.7278876304626465, + 0.6856966018676758 + ], + "min": [ + -0.7278878688812256, + -0.7278876304626465, + -0.6856967210769653 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 125912, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 191544, + "componentType": 5125, + "count": 372, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 380856, + "componentType": 5126, + "count": 81, + "max": [ + 1.6047770977020264, + 1.435754418373108, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 381828, + "componentType": 5126, + "count": 81, + "max": [ + 0.9672935605049133, + 0.9672935009002686, + 0.9672934412956238 + ], + "min": [ + -0.9672934412956238, + -0.9672934412956238, + -0.9672934412956238 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 126952, + "componentType": 5126, + "count": 81, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 193032, + "componentType": 5125, + "count": 324, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 382800, + "componentType": 5126, + "count": 170, + "max": [ + 5.054455280303955, + 1.435754418373108, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.8490129709243774 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 384840, + "componentType": 5126, + "count": 170, + "max": [ + 1.0, + 0.9959201812744141, + 1.0 + ], + "min": [ + -1.0, + -0.9959201812744141, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 127600, + "componentType": 5126, + "count": 170, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 194328, + "componentType": 5125, + "count": 432, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 386880, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0000007152557373, + 0.7046995162963867 + ], + "min": [ + -1.0, + -1.0000005960464478, + -9.471946716308594 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 388440, + "componentType": 5126, + "count": 130, + "max": [ + 0.7278876304626465, + 0.7278876900672913, + 0.685696542263031 + ], + "min": [ + -0.7278878092765808, + -0.7278876900672913, + -0.6856966614723206 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 128960, + "componentType": 5126, + "count": 130, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 196056, + "componentType": 5125, + "count": 372, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 390000, + "componentType": 5126, + "count": 163, + "max": [ + 1.0, + 1.0000007152557373, + 7.227802276611328 + ], + "min": [ + -1.0, + -1.0000005960464478, + -10.213605880737305 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 391956, + "componentType": 5126, + "count": 163, + "max": [ + 0.9362531304359436, + 0.9362528324127197, + 0.6856967210769653 + ], + "min": [ + -0.9362518787384033, + -0.9362521171569824, + -0.9041246771812439 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 130000, + "componentType": 5126, + "count": 163, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 197544, + "componentType": 5125, + "count": 564, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 393912, + "componentType": 5126, + "count": 394, + "max": [ + 1.0, + 18.78812599182129, + 61.4129638671875 + ], + "min": [ + -1.0000265836715698, + -6.685786247253418, + -19.325210571289063 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 398640, + "componentType": 5126, + "count": 394, + "max": [ + 0.999984622001648, + 0.9984884262084961, + 0.9971399903297424 + ], + "min": [ + -0.999984622001648, + -0.9998564124107361, + -0.9999890327453613 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 131304, + "componentType": 5126, + "count": 394, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 199800, + "componentType": 5125, + "count": 1908, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 403368, + "componentType": 5126, + "count": 427, + "max": [ + 1.0, + 18.78812599182129, + 62.79729461669922 + ], + "min": [ + -1.0000264644622803, + -10.688444137573242, + -19.325210571289063 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 408492, + "componentType": 5126, + "count": 427, + "max": [ + 0.999984622001648, + 0.9984884262084961, + 0.942253828048706 + ], + "min": [ + -0.999984622001648, + -0.9942888617515564, + -0.9999890327453613 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 134456, + "componentType": 5126, + "count": 427, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 207432, + "componentType": 5125, + "count": 2100, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 413616, + "componentType": 5126, + "count": 4, + "max": [ + 1.0, + 1.0, + 0.0 + ], + "min": [ + -1.0, + -1.0, + 0.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 413664, + "componentType": 5126, + "count": 4, + "max": [ + 0.0, + 0.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 137872, + "componentType": 5126, + "count": 4, + "max": [ + 0.552040696144104, + 0.5520407557487488 + ], + "min": [ + 0.00017120438860729337, + 0.00017118453979492188 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 215832, + "componentType": 5125, + "count": 6, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 413712, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + -0.5243277549743652, + 23.635038375854492 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 414000, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 137904, + "componentType": 5126, + "count": 24, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 215856, + "componentType": 5125, + "count": 36, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 414288, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + -0.5243277549743652, + 23.635038375854492 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 414576, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 138096, + "componentType": 5126, + "count": 24, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 216000, + "componentType": 5125, + "count": 36, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 414864, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + -0.5243277549743652, + 23.635038375854492 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 415152, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 138288, + "componentType": 5126, + "count": 24, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 216144, + "componentType": 5125, + "count": 36, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 415440, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + -0.5243277549743652, + 23.635038375854492 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 415728, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 138480, + "componentType": 5126, + "count": 24, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 216288, + "componentType": 5125, + "count": 36, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 416016, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + -0.5243277549743652, + 23.635038375854492 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 416304, + "componentType": 5126, + "count": 24, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 138672, + "componentType": 5126, + "count": 24, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 216432, + "componentType": 5125, + "count": 36, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 416592, + "componentType": 5126, + "count": 293, + "max": [ + 2.0662424564361572, + 2.0543012619018555, + 1.439711093902588 + ], + "min": [ + -2.404350996017456, + -2.0380208492279053, + -3.9581527709960938 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 420108, + "componentType": 5126, + "count": 293, + "max": [ + 0.9914566278457642, + 1.0, + 0.9916847944259644 + ], + "min": [ + -0.992046058177948, + -1.0, + -0.9920461177825928 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 138864, + "componentType": 5126, + "count": 293, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 216576, + "componentType": 5125, + "count": 1332, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 423624, + "componentType": 5126, + "count": 2233, + "max": [ + 1.4245450496673584, + 1.4245455265045166, + 2.3898863792419434 + ], + "min": [ + -1.4245450496673584, + -1.4245455265045166, + -1.0000001192092896 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 450420, + "componentType": 5126, + "count": 2233, + "max": [ + 0.9999812841415405, + 0.9980539083480835, + 1.0 + ], + "min": [ + -0.9999813437461853, + -0.9980539083480835, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 141208, + "componentType": 5126, + "count": 2233, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 221904, + "componentType": 5125, + "count": 6012, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 477216, + "componentType": 5126, + "count": 228, + "max": [ + 2.388322353363037, + 0.8702227473258972, + 0.06447845697402954 + ], + "min": [ + -1.5275236368179321, + -0.8702227473258972, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 479952, + "componentType": 5126, + "count": 228, + "max": [ + 1.0, + 1.0, + 0.9984556436538696 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 159072, + "componentType": 5126, + "count": 228, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 245952, + "componentType": 5125, + "count": 372, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 482688, + "componentType": 5126, + "count": 218, + "max": [ + 1.4848531484603882, + 1.0, + 1.869172215461731 + ], + "min": [ + -1.048890233039856, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 485304, + "componentType": 5126, + "count": 218, + "max": [ + 0.9917144775390625, + 0.9916465878486633, + 0.9641934037208557 + ], + "min": [ + -0.9883815050125122, + -0.9916466474533081, + -0.9913026690483093 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 160896, + "componentType": 5126, + "count": 218, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 247440, + "componentType": 5125, + "count": 948, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 487920, + "componentType": 5126, + "count": 124, + "max": [ + 0.9966909885406494, + 1.014929175376892, + 1.000000238418579 + ], + "min": [ + -0.9999998807907104, + -1.0149298906326294, + -0.9999999403953552 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 489408, + "componentType": 5126, + "count": 124, + "max": [ + 1.0, + 0.9999191164970398, + 0.9986411333084106 + ], + "min": [ + -1.0, + -0.9999797940254211, + -0.9986124038696289 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 162640, + "componentType": 5126, + "count": 124, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 251232, + "componentType": 5125, + "count": 348, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 490896, + "componentType": 5126, + "count": 550, + "max": [ + 2.2989330291748047, + 1.0, + 4.636533260345459 + ], + "min": [ + -1.2447105646133423, + -1.0000008344650269, + -5.401257038116455 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 497496, + "componentType": 5126, + "count": 550, + "max": [ + 0.9999999403953552, + 1.0, + 0.9880695939064026 + ], + "min": [ + -0.9999220967292786, + -1.0, + -0.9888824820518494 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 163632, + "componentType": 5126, + "count": 550, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 252624, + "componentType": 5125, + "count": 828, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 504096, + "componentType": 5126, + "count": 143, + "max": [ + 2.2317428588867188, + 1.1972366571426392, + 0.8918497562408447 + ], + "min": [ + -1.4705345630645752, + -1.1972366571426392, + 0.6782745718955994 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 505812, + "componentType": 5126, + "count": 143, + "max": [ + 0.6878100633621216, + 0.980428159236908, + 0.981875479221344 + ], + "min": [ + -0.9672936201095581, + -0.980428159236908, + -0.9817777276039124 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 168032, + "componentType": 5126, + "count": 143, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 255936, + "componentType": 5125, + "count": 540, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 507528, + "componentType": 5126, + "count": 766, + "max": [ + 2.2481727600097656, + 1.2473760843276978, + 1.3100638389587402 + ], + "min": [ + -3.553162097930908, + -4.557349681854248, + 0.811948835849762 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 516720, + "componentType": 5126, + "count": 766, + "max": [ + 0.964291512966156, + 0.9869245886802673, + 0.9941202998161316 + ], + "min": [ + -0.9883889555931091, + -0.9869352579116821, + -0.9941202402114868 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 169176, + "componentType": 5126, + "count": 766, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 258096, + "componentType": 5125, + "count": 2352, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 525912, + "componentType": 5126, + "count": 302, + "max": [ + 2.12054443359375, + 0.2362891435623169, + 0.46620693802833557 + ], + "min": [ + -1.443481683731079, + -2.081613063812256, + -0.17195267975330353 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 529536, + "componentType": 5126, + "count": 302, + "max": [ + 0.9713523983955383, + 0.9815104603767395, + 0.9813418388366699 + ], + "min": [ + -0.9691646099090576, + -0.9815105199813843, + -0.9810971617698669 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 175304, + "componentType": 5126, + "count": 302, + "max": [ + 0.875, + 1.0 + ], + "min": [ + 0.125, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 267504, + "componentType": 5125, + "count": 1080, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 533160, + "componentType": 5126, + "count": 718, + "max": [ + 1.1050254106521606, + 1.1050254106521606, + 1.0 + ], + "min": [ + -1.1050254106521606, + -1.1050254106521606, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 541776, + "componentType": 5126, + "count": 718, + "max": [ + 1.0, + 1.0, + 0.9904468655586243 + ], + "min": [ + -1.0, + -1.0, + -0.9904468655586243 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 177720, + "componentType": 5126, + "count": 718, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.010055530816316605 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 271824, + "componentType": 5125, + "count": 2292, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 550392, + "componentType": 5126, + "count": 526, + "max": [ + 1.0655094385147095, + 1.0655094385147095, + 1.162527084350586 + ], + "min": [ + -1.0655094385147095, + -1.0655094385147095, + -1.1625269651412964 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 556704, + "componentType": 5126, + "count": 526, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 183464, + "componentType": 5126, + "count": 526, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 280992, + "componentType": 5125, + "count": 1524, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 563016, + "componentType": 5126, + "count": 862, + "max": [ + 3.619826078414917, + 0.7188051342964172, + 5.349651336669922 + ], + "min": [ + -4.914288520812988, + -3.7150092124938965, + -14.208399772644043 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 573360, + "componentType": 5126, + "count": 862, + "max": [ + 1.0, + 1.0, + 0.9999745488166809 + ], + "min": [ + -1.0, + -1.0, + -0.9988905191421509 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 187672, + "componentType": 5126, + "count": 862, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.01000000536441803 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 287088, + "componentType": 5125, + "count": 3444, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 583704, + "componentType": 5126, + "count": 367, + "max": [ + 0.7339301705360413, + 0.8919680118560791, + 0.2628117501735687 + ], + "min": [ + -0.32463350892066956, + -0.8919678330421448, + 0.03503856807947159 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 588108, + "componentType": 5126, + "count": 367, + "max": [ + 1.0, + 1.0, + 0.9995782971382141 + ], + "min": [ + -1.0, + -0.9999960064888, + -0.9994806051254272 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 194568, + "componentType": 5126, + "count": 367, + "max": [ + 0.9900000095367432, + 1.0 + ], + "min": [ + 0.17182278633117676, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 300864, + "componentType": 5125, + "count": 960, + "type": "SCALAR" + } + ], + "asset": { + "extras": { + "author": "AwEsZ (https://sketchfab.com/AwEsZ)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/gokart-b60878a0f04d43d388dd2a57be419a72", + "title": "Gokart" + }, + "generator": "Sketchfab-15.73.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 304704, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 197504, + "byteOffset": 304704, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 592512, + "byteOffset": 502208, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + } + ], + "buffers": [ + { + "byteLength": 1094720, + "uri": "scene.bin" + } + ], + "extensionsRequired": [ + "KHR_materials_pbrSpecularGlossiness" + ], + "extensionsUsed": [ + "KHR_materials_pbrSpecularGlossiness", + "KHR_materials_emissive_strength" + ], + "materials": [ + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "glossinessFactor": 0.4, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Cube.014__0" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.13996733574246426, + 0.2277746416034252, + 0.9670327667059796, + 1.0 + ], + "glossinessFactor": 0.7238117381761122, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.003" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_emissive_strength": { + "emissiveStrength": 2.853728242867328 + }, + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.14126329114027159, + 0.2269658735100986, + 0.9646862478944651, + 1.0 + ], + "glossinessFactor": 0.5593971454675949, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.384546, + 0.384546, + 0.384546, + 1.0 + ], + "glossinessFactor": 0.0859870996475634, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.011" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.0250782, + 0.0250782, + 0.0250782, + 1.0 + ], + "glossinessFactor": 0.005607655995333523, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.017" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.322166, + 0.322166, + 0.322166, + 1.0 + ], + "glossinessFactor": 0.08440279502480628, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.018" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.0975918, + 0.0975918, + 0.0975918, + 1.0 + ], + "glossinessFactor": 0.0218221898846564, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.002" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.37575, + 0.37575, + 0.37575, + 1.0 + ], + "glossinessFactor": 0.0840202542545546, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.023" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.330797, + 0.330797, + 0.330797, + 1.0 + ], + "glossinessFactor": 0.0807208700441006, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.013" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.454743, + 0.512813, + 0.331401, + 1.0 + ], + "glossinessFactor": 0.10897910450489555, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.019" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.128878, + 0.128878, + 0.128878, + 1.0 + ], + "glossinessFactor": 0.02881799688042179, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.020" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.0942186, + 0.0942186, + 0.0942186, + 1.0 + ], + "glossinessFactor": 0.02106791943448617, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.007" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.435493, + 0.435493, + 0.435493, + 1.0 + ], + "glossinessFactor": 0.0973791951725316, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.015" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.31324, + 0.31324, + 0.31324, + 1.0 + ], + "glossinessFactor": 0.07004259332720342, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.009" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.8, + 0.8, + 0.8, + 1.0 + ], + "glossinessFactor": 0.2529822128134704, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.010" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.311847, + 0.311847, + 0.311847, + 1.0 + ], + "glossinessFactor": 0.0697311090579377, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.016" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.320487474963225, + 0.5649056904710056, + 0.5886663221733437, + 1.0 + ], + "glossinessFactor": 0.40107198211865236, + "specularFactor": [ + 0.2975516830058822, + 0.2975516830058822, + 0.2975516830058822 + ] + } + }, + "name": "Material.024" + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0.311823, + 0.311823, + 0.311823 + ], + "extensions": { + "KHR_materials_emissive_strength": { + "emissiveStrength": 10.0 + }, + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.8, + 0.8, + 0.8, + 1.0 + ], + "glossinessFactor": 0.1788854381999832, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.001" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.0152675, + 0.0152675, + 0.0152675, + 1.0 + ], + "glossinessFactor": 0.003413916784647804, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.005" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.333807, + 0.333807, + 0.333807, + 1.0 + ], + "glossinessFactor": 0.07464151433652724, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.006" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.233016, + 0.233016, + 0.233016, + 1.0 + ], + "glossinessFactor": 0.06024359425131868, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.004" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.152325, + 0.152325, + 0.152325, + 1.0 + ], + "glossinessFactor": 0.03406090546726555, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.022" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.548664, + 0.0797954, + 0.088238, + 1.0 + ], + "glossinessFactor": 0.04275436730645756, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.014" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.626663, + 0.626663, + 0.626663, + 1.0 + ], + "glossinessFactor": 0.14012610669839506, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.021" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.169699, + 0.169699, + 0.169699, + 1.0 + ], + "glossinessFactor": 0.04172474602194419, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.012" + }, + { + "doubleSided": true, + "extensions": { + "KHR_materials_pbrSpecularGlossiness": { + "diffuseFactor": [ + 0.641849, + 0.641849, + 0.641849, + 1.0 + ], + "glossinessFactor": 0.18912034860744442, + "specularFactor": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "name": "Material.008" + } + ], + "meshes": [ + { + "name": "Cube.001_Material.003_0", + "primitives": [ + { + "attributes": { + "NORMAL": 1, + "POSITION": 0, + "TEXCOORD_0": 2 + }, + "indices": 3, + "material": 1, + "mode": 4 + } + ] + }, + { + "name": "Cube.002_Material_0", + "primitives": [ + { + "attributes": { + "NORMAL": 5, + "POSITION": 4, + "TEXCOORD_0": 6 + }, + "indices": 7, + "material": 2, + "mode": 4 + } + ] + }, + { + "name": "Cube.003_Material_0", + "primitives": [ + { + "attributes": { + "NORMAL": 9, + "POSITION": 8, + "TEXCOORD_0": 10 + }, + "indices": 11, + "material": 2, + "mode": 4 + } + ] + }, + { + "name": "Cube.004_Material_0", + "primitives": [ + { + "attributes": { + "NORMAL": 13, + "POSITION": 12, + "TEXCOORD_0": 14 + }, + "indices": 15, + "material": 2, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.004_Material.011_0", + "primitives": [ + { + "attributes": { + "NORMAL": 17, + "POSITION": 16, + "TEXCOORD_0": 18 + }, + "indices": 19, + "material": 3, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.002_Material.017_0", + "primitives": [ + { + "attributes": { + "NORMAL": 21, + "POSITION": 20, + "TEXCOORD_0": 22 + }, + "indices": 23, + "material": 4, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.002_Material.018_0", + "primitives": [ + { + "attributes": { + "NORMAL": 25, + "POSITION": 24, + "TEXCOORD_0": 26 + }, + "indices": 27, + "material": 5, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.003_Material.017_0", + "primitives": [ + { + "attributes": { + "NORMAL": 29, + "POSITION": 28, + "TEXCOORD_0": 30 + }, + "indices": 31, + "material": 4, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.003_Material.018_0", + "primitives": [ + { + "attributes": { + "NORMAL": 33, + "POSITION": 32, + "TEXCOORD_0": 34 + }, + "indices": 35, + "material": 5, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.001_Material.017_0", + "primitives": [ + { + "attributes": { + "NORMAL": 37, + "POSITION": 36, + "TEXCOORD_0": 38 + }, + "indices": 39, + "material": 4, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.001_Material.018_0", + "primitives": [ + { + "attributes": { + "NORMAL": 41, + "POSITION": 40, + "TEXCOORD_0": 42 + }, + "indices": 43, + "material": 5, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.005_Material.017_0", + "primitives": [ + { + "attributes": { + "NORMAL": 45, + "POSITION": 44, + "TEXCOORD_0": 46 + }, + "indices": 47, + "material": 4, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.005_Material.018_0", + "primitives": [ + { + "attributes": { + "NORMAL": 49, + "POSITION": 48, + "TEXCOORD_0": 50 + }, + "indices": 51, + "material": 5, + "mode": 4 + } + ] + }, + { + "name": "Cube.005_Material.002_0", + "primitives": [ + { + "attributes": { + "NORMAL": 53, + "POSITION": 52, + "TEXCOORD_0": 54 + }, + "indices": 55, + "material": 6, + "mode": 4 + } + ] + }, + { + "name": "Cylinder_Material.023_0", + "primitives": [ + { + "attributes": { + "NORMAL": 57, + "POSITION": 56, + "TEXCOORD_0": 58 + }, + "indices": 59, + "material": 7, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.010_Material.013_0", + "primitives": [ + { + "attributes": { + "NORMAL": 61, + "POSITION": 60, + "TEXCOORD_0": 62 + }, + "indices": 63, + "material": 8, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.011_Material.011_0", + "primitives": [ + { + "attributes": { + "NORMAL": 65, + "POSITION": 64, + "TEXCOORD_0": 66 + }, + "indices": 67, + "material": 3, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.012_Material.011_0", + "primitives": [ + { + "attributes": { + "NORMAL": 69, + "POSITION": 68, + "TEXCOORD_0": 70 + }, + "indices": 71, + "material": 3, + "mode": 4 + } + ] + }, + { + "name": "Cube.014__0", + "primitives": [ + { + "attributes": { + "NORMAL": 73, + "POSITION": 72, + "TEXCOORD_0": 74 + }, + "indices": 75, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Cube.017__0", + "primitives": [ + { + "attributes": { + "NORMAL": 77, + "POSITION": 76, + "TEXCOORD_0": 78 + }, + "indices": 79, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.013_Material.011_0", + "primitives": [ + { + "attributes": { + "NORMAL": 81, + "POSITION": 80, + "TEXCOORD_0": 82 + }, + "indices": 83, + "material": 3, + "mode": 4 + } + ] + }, + { + "name": "Cube.018_Material.019_0", + "primitives": [ + { + "attributes": { + "NORMAL": 85, + "POSITION": 84, + "TEXCOORD_0": 86 + }, + "indices": 87, + "material": 9, + "mode": 4 + } + ] + }, + { + "name": "Cube.018_Material.020_0", + "primitives": [ + { + "attributes": { + "NORMAL": 89, + "POSITION": 88, + "TEXCOORD_0": 90 + }, + "indices": 91, + "material": 10, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.016_Material.007_0", + "primitives": [ + { + "attributes": { + "NORMAL": 93, + "POSITION": 92, + "TEXCOORD_0": 94 + }, + "indices": 95, + "material": 11, + "mode": 4 + } + ] + }, + { + "name": "Cube.016_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 97, + "POSITION": 96, + "TEXCOORD_0": 98 + }, + "indices": 99, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cube.019_Material.009_0", + "primitives": [ + { + "attributes": { + "NORMAL": 101, + "POSITION": 100, + "TEXCOORD_0": 102 + }, + "indices": 103, + "material": 13, + "mode": 4 + } + ] + }, + { + "name": "Cube.020_Material.010_0", + "primitives": [ + { + "attributes": { + "NORMAL": 105, + "POSITION": 104, + "TEXCOORD_0": 106 + }, + "indices": 107, + "material": 14, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.014_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 109, + "POSITION": 108, + "TEXCOORD_0": 110 + }, + "indices": 111, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cube.022_Material.016_0", + "primitives": [ + { + "attributes": { + "NORMAL": 113, + "POSITION": 112, + "TEXCOORD_0": 114 + }, + "indices": 115, + "material": 15, + "mode": 4 + } + ] + }, + { + "name": "Cube.023_Material.016_0", + "primitives": [ + { + "attributes": { + "NORMAL": 117, + "POSITION": 116, + "TEXCOORD_0": 118 + }, + "indices": 119, + "material": 15, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.017_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 121, + "POSITION": 120, + "TEXCOORD_0": 122 + }, + "indices": 123, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.018_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 125, + "POSITION": 124, + "TEXCOORD_0": 126 + }, + "indices": 127, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cube.024_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 129, + "POSITION": 128, + "TEXCOORD_0": 130 + }, + "indices": 131, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.020_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 133, + "POSITION": 132, + "TEXCOORD_0": 134 + }, + "indices": 135, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cube.025_Material.016_0", + "primitives": [ + { + "attributes": { + "NORMAL": 137, + "POSITION": 136, + "TEXCOORD_0": 138 + }, + "indices": 139, + "material": 15, + "mode": 4 + } + ] + }, + { + "name": "Cube.026_Material.016_0", + "primitives": [ + { + "attributes": { + "NORMAL": 141, + "POSITION": 140, + "TEXCOORD_0": 142 + }, + "indices": 143, + "material": 15, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.021_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 145, + "POSITION": 144, + "TEXCOORD_0": 146 + }, + "indices": 147, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.022_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 149, + "POSITION": 148, + "TEXCOORD_0": 150 + }, + "indices": 151, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.024__0", + "primitives": [ + { + "attributes": { + "NORMAL": 153, + "POSITION": 152, + "TEXCOORD_0": 154 + }, + "indices": 155, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.025__0", + "primitives": [ + { + "attributes": { + "NORMAL": 157, + "POSITION": 156, + "TEXCOORD_0": 158 + }, + "indices": 159, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Plane_Material.024_0", + "primitives": [ + { + "attributes": { + "NORMAL": 161, + "POSITION": 160, + "TEXCOORD_0": 162 + }, + "indices": 163, + "material": 16, + "mode": 4 + } + ] + }, + { + "name": "Cube.027_Material.001_0", + "primitives": [ + { + "attributes": { + "NORMAL": 165, + "POSITION": 164, + "TEXCOORD_0": 166 + }, + "indices": 167, + "material": 17, + "mode": 4 + } + ] + }, + { + "name": "Cube.030_Material.001_0", + "primitives": [ + { + "attributes": { + "NORMAL": 169, + "POSITION": 168, + "TEXCOORD_0": 170 + }, + "indices": 171, + "material": 17, + "mode": 4 + } + ] + }, + { + "name": "Cube.028_Material.001_0", + "primitives": [ + { + "attributes": { + "NORMAL": 173, + "POSITION": 172, + "TEXCOORD_0": 174 + }, + "indices": 175, + "material": 17, + "mode": 4 + } + ] + }, + { + "name": "Cube.029_Material.001_0", + "primitives": [ + { + "attributes": { + "NORMAL": 177, + "POSITION": 176, + "TEXCOORD_0": 178 + }, + "indices": 179, + "material": 17, + "mode": 4 + } + ] + }, + { + "name": "Cube.031_Material.001_0", + "primitives": [ + { + "attributes": { + "NORMAL": 181, + "POSITION": 180, + "TEXCOORD_0": 182 + }, + "indices": 183, + "material": 17, + "mode": 4 + } + ] + }, + { + "name": "Cube.007_Material.005_0", + "primitives": [ + { + "attributes": { + "NORMAL": 185, + "POSITION": 184, + "TEXCOORD_0": 186 + }, + "indices": 187, + "material": 18, + "mode": 4 + } + ] + }, + { + "name": "Cube.008_Material.006_0", + "primitives": [ + { + "attributes": { + "NORMAL": 189, + "POSITION": 188, + "TEXCOORD_0": 190 + }, + "indices": 191, + "material": 19, + "mode": 4 + } + ] + }, + { + "name": "Cube.009__0", + "primitives": [ + { + "attributes": { + "NORMAL": 193, + "POSITION": 192, + "TEXCOORD_0": 194 + }, + "indices": 195, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Cube.010_Material.004_0", + "primitives": [ + { + "attributes": { + "NORMAL": 197, + "POSITION": 196, + "TEXCOORD_0": 198 + }, + "indices": 199, + "material": 20, + "mode": 4 + } + ] + }, + { + "name": "Cube.011_Material.022_0", + "primitives": [ + { + "attributes": { + "NORMAL": 201, + "POSITION": 200, + "TEXCOORD_0": 202 + }, + "indices": 203, + "material": 21, + "mode": 4 + } + ] + }, + { + "name": "Cube.012_Material.014_0", + "primitives": [ + { + "attributes": { + "NORMAL": 205, + "POSITION": 204, + "TEXCOORD_0": 206 + }, + "indices": 207, + "material": 22, + "mode": 4 + } + ] + }, + { + "name": "Cube.013_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 209, + "POSITION": 208, + "TEXCOORD_0": 210 + }, + "indices": 211, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cube.015_Material.015_0", + "primitives": [ + { + "attributes": { + "NORMAL": 213, + "POSITION": 212, + "TEXCOORD_0": 214 + }, + "indices": 215, + "material": 12, + "mode": 4 + } + ] + }, + { + "name": "Cube.021_Material.021_0", + "primitives": [ + { + "attributes": { + "NORMAL": 217, + "POSITION": 216, + "TEXCOORD_0": 218 + }, + "indices": 219, + "material": 23, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.007_Material.002_0", + "primitives": [ + { + "attributes": { + "NORMAL": 221, + "POSITION": 220, + "TEXCOORD_0": 222 + }, + "indices": 223, + "material": 6, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.008_Material.004_0", + "primitives": [ + { + "attributes": { + "NORMAL": 225, + "POSITION": 224, + "TEXCOORD_0": 226 + }, + "indices": 227, + "material": 20, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.009_Material.012_0", + "primitives": [ + { + "attributes": { + "NORMAL": 229, + "POSITION": 228, + "TEXCOORD_0": 230 + }, + "indices": 231, + "material": 24, + "mode": 4 + } + ] + }, + { + "name": "Cylinder.015_Material.008_0", + "primitives": [ + { + "attributes": { + "NORMAL": 233, + "POSITION": 232, + "TEXCOORD_0": 234 + }, + "indices": 235, + "material": 25, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "matrix": [ + 0.5465628504753113, + 0.0, + 0.0, + 0.0, + 0.0, + 1.2136133220048945e-16, + -0.5465628504753113, + 0.0, + 0.0, + 0.5465628504753113, + 1.2136133220048945e-16, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "Sketchfab_model" + }, + { + "children": [ + 2 + ], + "matrix": [ + 0.009999999776482582, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.009999999776482582, + 0.0, + 0.0, + -0.009999999776482582, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "Gokart .fbx" + }, + { + "children": [ + 3, + 5, + 7, + 9, + 11, + 13, + 16, + 19, + 22, + 25, + 27, + 29, + 31, + 33, + 35, + 37, + 39, + 41, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, + 80, + 83, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, + 104, + 106, + 108, + 110, + 112, + 114, + 116, + 118, + 120, + 122 + ], + "name": "RootNode" + }, + { + "children": [ + 4 + ], + "matrix": [ + 100.0, + 0.0, + 0.0, + 0.0, + -0.0, + -1.629206793918314e-05, + -99.99999999999868, + 0.0, + 0.0, + 99.99999999999868, + -1.629206793918314e-05, + 0.0, + -180.9166717529297, + -103.29144287109375, + -1.377416729927063, + 1.0 + ], + "name": "Cube.001" + }, + { + "mesh": 0, + "name": "Cube.001_Material.003_0" + }, + { + "children": [ + 6 + ], + "matrix": [ + 100.0, + 0.0, + 0.0, + 0.0, + -0.0, + -1.629206793918314e-05, + -99.99999999999868, + 0.0, + 0.0, + 99.99999999999868, + -1.629206793918314e-05, + 0.0, + -2.7361929416656494, + -61.51292419433594, + -64.2730712890625, + 1.0 + ], + "name": "Cube.002" + }, + { + "mesh": 1, + "name": "Cube.002_Material_0" + }, + { + "children": [ + 8 + ], + "matrix": [ + 99.9999999999996, + 8.742277980456488e-06, + -0.0, + -0.0, + 1.4242978711041864e-12, + -1.6292067994694293e-05, + 99.99999999999865, + -0.0, + -8.74227798045637e-06, + 99.99999999999828, + 1.6292067983592062e-05, + -0.0, + -2.7361929416656494, + -61.51292419433594, + 62.06550598144531, + 1.0 + ], + "name": "Cube.003" + }, + { + "mesh": 2, + "name": "Cube.003_Material_0" + }, + { + "children": [ + 10 + ], + "matrix": [ + 44.49724578857422, + 0.0, + 0.0, + 0.0, + 0.0, + -7.249521514939821e-06, + -44.49724578857363, + 0.0, + 0.0, + 44.49724578857363, + -7.249521514939821e-06, + 0.0, + 216.64671325683594, + -103.29144287109375, + -6.390821933746338, + 1.0 + ], + "name": "Cube.004" + }, + { + "mesh": 3, + "name": "Cube.004_Material_0" + }, + { + "children": [ + 12 + ], + "matrix": [ + 9.082627296447754, + 0.0, + 0.0, + 0.0, + 0.0, + 9.082627296447745, + 3.970142484187525e-07, + 0.0, + 0.0, + -3.970142484187525e-07, + 9.082627296447745, + 0.0, + 138.75900268554688, + -71.76129913330078, + -6.390821933746338, + 1.0 + ], + "name": "Cylinder.004" + }, + { + "mesh": 4, + "name": "Cylinder.004_Material.011_0" + }, + { + "children": [ + 14, + 15 + ], + "matrix": [ + 37.060119628906115, + 3.2398986778487053e-06, + -1.4617639759028986e-29, + -0.0, + -3.2398986778487023e-06, + 37.06011962890609, + -1.6199492790520793e-06, + -0.0, + 1.4162046911713357e-13, + -1.619949279052073e-06, + -37.060119628906214, + -0.0, + -133.59811401367188, + -74.20342254638672, + -117.47443389892578, + 1.0 + ], + "name": "Cylinder.002" + }, + { + "mesh": 5, + "name": "Cylinder.002_Material.017_0" + }, + { + "mesh": 6, + "name": "Cylinder.002_Material.018_0" + }, + { + "children": [ + 17, + 18 + ], + "matrix": [ + 38.789672851562365, + 3.3911010283932583e-06, + -1.529982821945525e-29, + -0.0, + -3.3911010283932553e-06, + 38.78967285156233, + -1.6955504515301855e-06, + -0.0, + 1.4822973377165398e-13, + -1.695550451530179e-06, + -38.789672851562464, + -0.0, + 138.758544921875, + -71.76127624511719, + -140.7153778076172, + 1.0 + ], + "name": "Cylinder.003" + }, + { + "mesh": 7, + "name": "Cylinder.003_Material.017_0" + }, + { + "mesh": 8, + "name": "Cylinder.003_Material.018_0" + }, + { + "children": [ + 20, + 21 + ], + "matrix": [ + 37.06011962890625, + 0.0, + 0.0, + 0.0, + 0.0, + 37.060119628906214, + 1.6199492790520788e-06, + 0.0, + 0.0, + -1.6199492790520788e-06, + 37.060119628906214, + 0.0, + -133.59811401367188, + -74.20342254638672, + 115.83423614501953, + 1.0 + ], + "name": "Cylinder.001" + }, + { + "mesh": 9, + "name": "Cylinder.001_Material.017_0" + }, + { + "mesh": 10, + "name": "Cylinder.001_Material.018_0" + }, + { + "children": [ + 23, + 24 + ], + "matrix": [ + 38.7896728515625, + 0.0, + 0.0, + 0.0, + 0.0, + 38.789672851562464, + 1.695550451530185e-06, + 0.0, + 0.0, + -1.695550451530185e-06, + 38.789672851562464, + 0.0, + 138.75900268554688, + -71.76129913330078, + 139.07518005371094, + 1.0 + ], + "name": "Cylinder.005" + }, + { + "mesh": 11, + "name": "Cylinder.005_Material.017_0" + }, + { + "mesh": 12, + "name": "Cylinder.005_Material.018_0" + }, + { + "children": [ + 26 + ], + "matrix": [ + 100.0, + 0.0, + 0.0, + 0.0, + 0.0, + -1.629206793918314e-05, + -99.99999999999868, + 0.0, + 0.0, + 99.99999999999868, + -1.629206793918314e-05, + 0.0, + 28.3443546295166, + -97.21454620361328, + -3.111443042755127, + 1.0 + ], + "name": "Cube.005" + }, + { + "mesh": 13, + "name": "Cube.005_Material.002_0" + }, + { + "children": [ + 28 + ], + "matrix": [ + 13.6736421585083, + 0.0, + 0.0, + 0.0, + 0.0, + 13.673642158508287, + 5.976938816844656e-07, + 0.0, + 0.0, + -1.059036000077957e-07, + 2.4227919578552224, + 0.0, + 138.78781127929688, + -72.0079116821289, + 50.849945068359375, + 1.0 + ], + "name": "Cylinder" + }, + { + "mesh": 14, + "name": "Cylinder_Material.023_0" + }, + { + "children": [ + 30 + ], + "matrix": [ + 13.6736421585083, + 0.0, + 0.0, + 0.0, + 0.0, + 13.673642158508287, + 5.976938816844656e-07, + 0.0, + 0.0, + -1.059036000077957e-07, + 2.4227919578552224, + 0.0, + 138.78781127929688, + -72.0079116821289, + -103.99324798583984, + 1.0 + ], + "name": "Cylinder.010" + }, + { + "mesh": 15, + "name": "Cylinder.010_Material.013_0" + }, + { + "children": [ + 32 + ], + "matrix": [ + 1.691789474038727, + 0.5214763842619607, + -2.2226504067785048e-08, + -0.0, + -1.8130016743675637e-08, + 1.3427367857960625e-07, + 1.770336031913752, + -0.0, + -0.5214763842619609, + 1.6917894740387216, + -1.336566435829907e-07, + -0.0, + -172.22462463378906, + -84.13326263427734, + -25.271636962890625, + 1.0 + ], + "name": "Cylinder.011" + }, + { + "mesh": 16, + "name": "Cylinder.011_Material.011_0" + }, + { + "children": [ + 34 + ], + "matrix": [ + 1.6917894750734335, + 0.5214763809051342, + 2.2226507212533354e-08, + 0.0, + -1.8130013402380336e-08, + 1.3427367936579338e-07, + -1.7703360319137522, + 0.0, + -0.5214763809051342, + 1.6917894750734284, + 1.3365664318989716e-07, + 0.0, + -172.22462463378906, + -84.13326263427734, + 18.45335578918457, + 1.0 + ], + "name": "Cylinder.012" + }, + { + "mesh": 17, + "name": "Cylinder.012_Material.011_0" + }, + { + "children": [ + 36 + ], + "matrix": [ + 100.0, + 0.0, + 0.0, + 0.0, + -0.0, + -1.629206793918314e-05, + -99.99999999999868, + 0.0, + 0.0, + 99.99999999999868, + -1.629206793918314e-05, + 0.0, + -183.00173950195313, + -81.4563980102539, + -33.63227462768555, + 1.0 + ], + "name": "Cube.014" + }, + { + "mesh": 18, + "name": "Cube.014__0" + }, + { + "children": [ + 38 + ], + "matrix": [ + 100.0, + 0.0, + 0.0, + 0.0, + -0.0, + -1.629206793918314e-05, + -99.99999999999868, + 0.0, + 0.0, + 99.99999999999868, + -1.629206793918314e-05, + 0.0, + -183.01681518554688, + -81.4563980102539, + 27.61269760131836, + 1.0 + ], + "name": "Cube.017" + }, + { + "mesh": 19, + "name": "Cube.017__0" + }, + { + "children": [ + 40 + ], + "matrix": [ + 2.371725462353214, + -2.832660673149439, + -4.2325768966989483e-07, + 0.0, + -3.9553730988344095e-07, + 2.208536200545033e-07, + -3.694461584091159, + 0.0, + 2.832660673149443, + 2.3717254623532416, + -1.6149006179693636e-07, + 0.0, + -146.07284545898438, + -69.66937255859375, + 1.0524846315383911, + 1.0 + ], + "name": "Cylinder.013" + }, + { + "mesh": 20, + "name": "Cylinder.013_Material.011_0" + }, + { + "children": [ + 42, + 43 + ], + "matrix": [ + 20.660037994384766, + 0.0, + 0.0, + 0.0, + -0.0, + -3.365947426306216e-06, + -20.660037994384492, + 0.0, + 0.0, + 20.660037994384492, + -3.365947426306216e-06, + 0.0, + -111.04557800292969, + -79.02393341064453, + -0.2444954514503479, + 1.0 + ], + "name": "Cube.018" + }, + { + "mesh": 21, + "name": "Cube.018_Material.019_0" + }, + { + "mesh": 22, + "name": "Cube.018_Material.020_0" + }, + { + "children": [ + 45 + ], + "matrix": [ + 27.37065366226178, + -32.03102890179117, + -4.838174222462399e-06, + 0.0, + -8.36156152153696e-06, + -7.810387113040087e-07, + -42.132408142089005, + 0.0, + 34.64056680217199, + 29.60051516027664, + -7.423463130945328e-06, + 0.0, + -57.927913665771484, + 8.232696533203125, + 1.5685237646102905, + 1.0 + ], + "name": "Cylinder.016" + }, + { + "mesh": 23, + "name": "Cylinder.016_Material.007_0" + }, + { + "children": [ + 47 + ], + "matrix": [ + 49.24507522583008, + 0.0, + 0.0, + 0.0, + 0.0, + 3.7178997451305805e-06, + -49.245075225829936, + 0.0, + 0.0, + 49.245075225829936, + 3.7178997451305805e-06, + 0.0, + 198.53831481933594, + -77.40774536132813, + -4.071634292602539, + 1.0 + ], + "name": "Cube.016" + }, + { + "mesh": 24, + "name": "Cube.016_Material.015_0" + }, + { + "children": [ + 49 + ], + "matrix": [ + 6.912303374497095, + -8.089254714137104, + -1.221853464553617e-06, + 0.0, + -2.11166456677354e-06, + -1.9724686204736348e-07, + -10.640298843383578, + 0.0, + 8.089254714136919, + 6.9123033744972, + -1.7335248718694725e-06, + 0.0, + -63.99066925048828, + 9.319403648376465, + 1.1521339416503906, + 1.0 + ], + "name": "Cube.019" + }, + { + "mesh": 25, + "name": "Cube.019_Material.009_0" + }, + { + "children": [ + 51 + ], + "matrix": [ + 6.912303374497095, + -8.089254714137104, + -1.221853464553617e-06, + 0.0, + -2.11166456677354e-06, + -1.9724686204736348e-07, + -10.640298843383578, + 0.0, + 8.089254714136919, + 6.9123033744972, + -1.7335248718694725e-06, + 0.0, + -63.99066925048828, + 9.319403648376465, + 1.1521339416503906, + 1.0 + ], + "name": "Cube.020" + }, + { + "mesh": 26, + "name": "Cube.020_Material.010_0" + }, + { + "children": [ + 53 + ], + "matrix": [ + 2.7582262466426974, + -9.273547610783016e-09, + 4.401464840331261, + 0.0, + -0.6377466847687666, + 5.1394808139234325, + 0.3996509698728866, + 0.0, + -4.355016866412659, + -0.7526232335331481, + 2.729119112451548, + 0.0, + -177.22520446777344, + -81.53375244140625, + -61.00525665283203, + 1.0 + ], + "name": "Cylinder.014" + }, + { + "mesh": 27, + "name": "Cylinder.014_Material.015_0" + }, + { + "children": [ + 55 + ], + "matrix": [ + 6.099998474121094, + 0.0, + 0.0, + 0.0, + -0.0, + -9.938158956929435e-07, + -6.099998474121013, + 0.0, + 0.0, + 6.099998474121013, + -9.938158956929435e-07, + 0.0, + -135.59507751464844, + -74.2826919555664, + -86.45524597167969, + 1.0 + ], + "name": "Cube.022" + }, + { + "mesh": 28, + "name": "Cube.022_Material.016_0" + }, + { + "children": [ + 57 + ], + "matrix": [ + 3.8157415800518444, + 0.0, + 1.3671224785092815, + 0.0, + 1.3671224785092801, + -1.7717358062425826e-07, + -3.815741580051841, + 0.0, + 5.975883076410503e-08, + 4.053259372711178, + -1.6679138768625373e-07, + 0.0, + -127.4399185180664, + -74.2826919555664, + -84.6766357421875, + 1.0 + ], + "name": "Cube.023" + }, + { + "mesh": 29, + "name": "Cube.023_Material.016_0" + }, + { + "children": [ + 59 + ], + "matrix": [ + 5.194295406341553, + 0.0, + 0.0, + 0.0, + 0.0, + 5.194295406341547, + 2.270498264749261e-07, + 0.0, + 0.0, + -2.270498264749261e-07, + 5.194295406341547, + 0.0, + -133.60745239257813, + -74.33756256103516, + -93.42362976074219, + 1.0 + ], + "name": "Cylinder.017" + }, + { + "mesh": 30, + "name": "Cylinder.017_Material.015_0" + }, + { + "children": [ + 61 + ], + "matrix": [ + 3.017160415649414, + -1.0218804493166e-16, + -7.839332655433868e-18, + 0.0, + 1.0016528169843961e-16, + 2.891276398176509, + 0.8624255116293914, + 0.0, + -2.169718888957163e-17, + -0.8624255116293914, + 2.891276398176509, + 0.0, + -111.07765197753906, + -86.98664855957031, + -51.24543762207031, + 1.0 + ], + "name": "Cylinder.018" + }, + { + "mesh": 31, + "name": "Cylinder.018_Material.015_0" + }, + { + "children": [ + 63 + ], + "matrix": [ + -49.24507522583008, + -0.0, + -0.0, + -0.0, + -0.0, + -3.7178997451305805e-06, + -49.245075225829936, + -0.0, + -0.0, + 49.245075225829936, + -3.7178997451305805e-06, + -0.0, + -207.60374450683594, + -90.11591339111328, + -3.6969103813171387, + 1.0 + ], + "name": "Cube.024" + }, + { + "mesh": 32, + "name": "Cube.024_Material.015_0" + }, + { + "children": [ + 65 + ], + "matrix": [ + 2.7582262466426677, + -4.1648057624388133e-07, + -4.401464840331261, + -0.0, + -0.6377468994305435, + 5.139480739851866, + -0.39965157987853367, + -0.0, + -4.355016435186451, + -0.7526236702585736, + -2.72911877258896, + -0.0, + -177.22520446777344, + -81.53375244140625, + 58.478759765625, + 1.0 + ], + "name": "Cylinder.020" + }, + { + "mesh": 33, + "name": "Cylinder.020_Material.015_0" + }, + { + "children": [ + 67 + ], + "matrix": [ + 6.09999847412107, + 5.332788234112702e-07, + -0.0, + -0.0, + 8.688214840429459e-14, + -9.93815899079123e-07, + 6.099998474121012, + -0.0, + -5.332788234112631e-07, + 6.099998474120989, + 9.93815898401887e-07, + -0.0, + -135.59507751464844, + -74.2826919555664, + 83.92874908447266, + 1.0 + ], + "name": "Cube.025" + }, + { + "mesh": 34, + "name": "Cube.025_Material.016_0" + }, + { + "children": [ + 69 + ], + "matrix": [ + 3.815742229951255, + 3.3750164102712546e-16, + -1.367122078322805, + -0.0, + 1.367122078322801, + -3.0601256871847195e-07, + 3.815742229951245, + -0.0, + 1.0321484500936843e-07, + 4.05325937271117, + 2.8808052422786946e-07, + -0.0, + -127.4399185180664, + -74.2826919555664, + 82.15013885498047, + 1.0 + ], + "name": "Cube.026" + }, + { + "mesh": 35, + "name": "Cube.026_Material.016_0" + }, + { + "children": [ + 71 + ], + "matrix": [ + 5.194295406341534, + 4.5409974354846065e-07, + -2.0487882881159703e-30, + -0.0, + -4.5409974354846023e-07, + 5.19429540634153, + -2.270498264749262e-07, + -0.0, + 1.984932698458214e-14, + -2.270498264749253e-07, + -5.194295406341547, + -0.0, + -133.60745239257813, + -74.33756256103516, + 90.89713287353516, + 1.0 + ], + "name": "Cylinder.021" + }, + { + "mesh": 36, + "name": "Cylinder.021_Material.015_0" + }, + { + "children": [ + 73 + ], + "matrix": [ + 3.0171604156494025, + 2.637685506523682e-07, + 7.839353245260823e-18, + -0.0, + -2.527634713407508e-07, + 2.891276986479356, + -0.862424373444299, + -0.0, + 7.539553610522307e-08, + -0.8624243734442957, + -2.891276986479367, + -0.0, + -111.07765197753906, + -86.98664855957031, + 48.71894073486328, + 1.0 + ], + "name": "Cylinder.022" + }, + { + "mesh": 37, + "name": "Cylinder.022_Material.015_0" + }, + { + "children": [ + 75 + ], + "matrix": [ + 9.560485961942194e-08, + 1.2663247585296573, + 7.547884625963117e-08, + 0.0, + 2.0631049603573206e-07, + 7.547883065410894e-08, + -1.266324758529644, + 0.0, + -1.2663247585296427, + 9.560487192107235e-08, + -2.0631049027153015e-07, + 0.0, + -63.4453125, + -89.73600006103516, + -29.908660888671875, + 1.0 + ], + "name": "Cylinder.024" + }, + { + "mesh": 38, + "name": "Cylinder.024__0" + }, + { + "children": [ + 77 + ], + "matrix": [ + 9.560485961942194e-08, + 1.2663247585296573, + 7.547884625963117e-08, + 0.0, + 2.0631049603573206e-07, + 7.547883065410894e-08, + -1.266324758529644, + 0.0, + -1.2663247585296427, + 9.560487192107235e-08, + -2.0631049027153015e-07, + 0.0, + -65.59024810791016, + -89.73600006103516, + -32.43643569946289, + 1.0 + ], + "name": "Cylinder.025" + }, + { + "mesh": 39, + "name": "Cylinder.025__0" + }, + { + "children": [ + 79 + ], + "matrix": [ + 667.77001953125, + 0.0, + 0.0, + 0.0, + 0.0, + -0.00010879354525952778, + -667.7700195312411, + 0.0, + 0.0, + 667.7700195312411, + -0.00010879354525952778, + 0.0, + 76.45624542236328, + -110.9297866821289, + 70.66020965576172, + 1.0 + ], + "name": "Plane" + }, + { + "mesh": 40, + "name": "Plane_Material.024_0" + }, + { + "children": [ + 81 + ], + "matrix": [ + 776.72509765625, + 0.0, + 0.0, + 0.0, + 0.0, + 776.7250976562477, + -5.864111473215595e-05, + 0.0, + 0.0, + 5.864111473215595e-05, + 776.7250976562477, + 0.0, + -11.673778533935547, + 197.177734375, + -2.7074992656707764, + 1.0 + ], + "name": "Area" + }, + { + "children": [ + 82 + ], + "matrix": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 2.220446049250313e-16, + 1.0, + 0.0, + 0.0, + -1.0, + 2.220446049250313e-16, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "Object_81" + }, + { + "name": "Object_82" + }, + { + "children": [ + 84 + ], + "matrix": [ + 776.72509765625, + -1.7246765856392274e-13, + -1.724676174444384e-13, + 0.0, + 1.7246758934588804e-13, + -0.00012654458061084285, + 776.7250976562398, + 0.0, + -1.7246768666246183e-13, + -776.7250976562398, + -0.00012654458061084285, + 0.0, + -11.673778533935547, + 60.364830017089844, + 412.1635437011719, + 1.0 + ], + "name": "Area.001" + }, + { + "children": [ + 85 + ], + "matrix": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 2.220446049250313e-16, + 1.0, + 0.0, + 0.0, + -1.0, + 2.220446049250313e-16, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "Object_84" + }, + { + "name": "Object_85" + }, + { + "children": [ + 87 + ], + "matrix": [ + 74.50930358578245, + -13.917238493120486, + -65.22787500575406, + 0.0, + 10.471554231742534, + 99.02681708648421, + -9.167117850866397, + 0.0, + 65.8688931002014, + -1.6635871000203473e-05, + 75.24153721020035, + 0.0, + -901.1765747070313, + 137.55038452148438, + 802.5232543945313, + 1.0 + ], + "name": "Camera" + }, + { + "name": "Object_87" + }, + { + "children": [ + 89 + ], + "matrix": [ + 31.94158172607422, + 0.0, + 0.0, + 0.0, + -0.0, + -5.203944195661719e-06, + -31.941581726073796, + 0.0, + 0.0, + 31.941581726073796, + -5.203944195661719e-06, + 0.0, + -3.8080215454101563, + -100.30036163330078, + -328.64013671875, + 1.0 + ], + "name": "Cube.027" + }, + { + "mesh": 41, + "name": "Cube.027_Material.001_0" + }, + { + "children": [ + 91 + ], + "matrix": [ + 31.94158172607422, + 0.0, + 0.0, + 0.0, + -0.0, + -5.203944195661719e-06, + -31.941581726073796, + 0.0, + 0.0, + 31.941581726073796, + -5.203944195661719e-06, + 0.0, + -195.3572998046875, + -100.30036163330078, + -328.64013671875, + 1.0 + ], + "name": "Cube.030" + }, + { + "mesh": 42, + "name": "Cube.030_Material.001_0" + }, + { + "children": [ + 93 + ], + "matrix": [ + 31.94158172607422, + 0.0, + 0.0, + 0.0, + 0.0, + -5.203944195661719e-06, + -31.941581726073796, + 0.0, + 0.0, + 31.941581726073796, + -5.203944195661719e-06, + 0.0, + 380.9054260253906, + -100.30036163330078, + -328.64013671875, + 1.0 + ], + "name": "Cube.028" + }, + { + "mesh": 43, + "name": "Cube.028_Material.001_0" + }, + { + "children": [ + 95 + ], + "matrix": [ + 31.94158172607422, + 0.0, + 0.0, + 0.0, + 0.0, + -5.203944195661719e-06, + -31.941581726073796, + 0.0, + 0.0, + 31.941581726073796, + -5.203944195661719e-06, + 0.0, + 189.35614013671875, + -100.30036163330078, + -328.64013671875, + 1.0 + ], + "name": "Cube.029" + }, + { + "mesh": 44, + "name": "Cube.029_Material.001_0" + }, + { + "children": [ + 97 + ], + "matrix": [ + 31.94158172607422, + 0.0, + 0.0, + 0.0, + 0.0, + -5.203944195661719e-06, + -31.941581726073796, + 0.0, + 0.0, + 31.941581726073796, + -5.203944195661719e-06, + 0.0, + 570.0794067382813, + -100.30036163330078, + -328.64013671875, + 1.0 + ], + "name": "Cube.031" + }, + { + "mesh": 45, + "name": "Cube.031_Material.001_0" + }, + { + "children": [ + 99 + ], + "matrix": [ + -8.542608148136784, + 7.745490711333755, + 0.1347077718414399, + -0.0, + -0.10716871977141547, + 0.08235009174565405, + -11.531199931556388, + -0.0, + 7.745920694214221, + 8.543273296243681, + -0.010977267348351945, + -0.0, + 69.1947250366211, + -52.41290283203125, + 81.43106079101563, + 1.0 + ], + "name": "Cube.007" + }, + { + "mesh": 46, + "name": "Cube.007_Material.005_0" + }, + { + "children": [ + 101 + ], + "matrix": [ + -18.708347473242785, + 9.898197609519839, + 0.24455972929156877, + -0.0, + -0.1967043391085915, + 0.15115845917471277, + -21.165420160523592, + -0.0, + 9.899264255247338, + 18.70933525727829, + 0.04161722517214639, + -0.0, + 104.8611068725586, + -46.64316940307617, + 81.1744384765625, + 1.0 + ], + "name": "Cube.008" + }, + { + "mesh": 47, + "name": "Cube.008_Material.006_0" + }, + { + "children": [ + 103 + ], + "matrix": [ + -20.80259667686328, + 3.90379160377377, + 0.22121180430771184, + -0.0, + -0.1967039870208451, + 0.15115742287709255, + -21.165420171196747, + -0.0, + 3.9051032111264052, + 20.803223658753407, + 0.11227805945806241, + -0.0, + 81.76215362548828, + -79.21407318115234, + 81.12286376953125, + 1.0 + ], + "name": "Cube.009" + }, + { + "mesh": 48, + "name": "Cube.009__0" + }, + { + "children": [ + 105 + ], + "matrix": [ + -20.80259667686328, + 3.90379160377377, + 0.22121180430771184, + -0.0, + -0.1967039870208451, + 0.15115742287709255, + -21.165420171196747, + -0.0, + 3.9051032111264052, + 20.803223658753407, + 0.11227805945806241, + -0.0, + 53.96492004394531, + -67.14149475097656, + 81.46742248535156, + 1.0 + ], + "name": "Cube.010" + }, + { + "mesh": 49, + "name": "Cube.010_Material.004_0" + }, + { + "children": [ + 107 + ], + "matrix": [ + 53.1199948439731, + -8.873678566543463, + 3.7528206387940345e-07, + 0.0, + -4.0459530204957755e-10, + -5.440394677278922e-08, + -1.2291315793991076, + 0.0, + 4.351256138108488, + 26.047675931444463, + -1.1543571869633393e-06, + 0.0, + 111.95954895019531, + -67.5615463256836, + 50.90590286254883, + 1.0 + ], + "name": "Cube.011" + }, + { + "mesh": 50, + "name": "Cube.011_Material.022_0" + }, + { + "children": [ + 109 + ], + "matrix": [ + 3.942949056625366, + 0.0, + 0.0, + 0.0, + 0.0, + -4.464906820434164e-07, + -2.740540266036951, + 0.0, + 0.0, + 3.9429490566253143, + -6.423879391127854e-07, + 0.0, + 116.21773529052734, + -68.35169982910156, + -103.99210357666016, + 1.0 + ], + "name": "Cube.012" + }, + { + "mesh": 51, + "name": "Cube.012_Material.014_0" + }, + { + "children": [ + 111 + ], + "matrix": [ + 49.24507522583008, + 0.0, + 0.0, + 0.0, + 0.0, + 3.7178997451305805e-06, + -49.245075225829936, + 0.0, + 0.0, + 49.245075225829936, + 3.7178997451305805e-06, + 0.0, + -144.8214569091797, + -134.1517333984375, + -4.071634292602539, + 1.0 + ], + "name": "Cube.013" + }, + { + "mesh": 52, + "name": "Cube.013_Material.015_0" + }, + { + "children": [ + 113 + ], + "matrix": [ + 49.24507522582989, + 4.305141367926976e-06, + -0.0, + -0.0, + -3.2502913087651733e-13, + 3.717899750597882e-06, + 49.245075225829936, + -0.0, + -4.305141367926964e-06, + 49.24507522582975, + -3.7178997451305805e-06, + -0.0, + 94.87049865722656, + -141.41041564941406, + 79.86068725585938, + 1.0 + ], + "name": "Cube.015" + }, + { + "mesh": 53, + "name": "Cube.015_Material.015_0" + }, + { + "children": [ + 115 + ], + "matrix": [ + 3.5782519035561875, + -4.187515945279006, + -6.32509647148292e-07, + 0.0, + -1.0931329711092446e-06, + -1.021078198633155e-07, + -5.508100986480604, + 0.0, + 4.187515945278911, + 3.5782519035562417, + -8.973835560992987e-07, + 0.0, + -64.37947845458984, + 5.659545421600342, + -4.032508850097656, + 1.0 + ], + "name": "Cube.021" + }, + { + "mesh": 54, + "name": "Cube.021_Material.021_0" + }, + { + "children": [ + 117 + ], + "matrix": [ + -25.150145408020766, + 4.719648035929023, + 0.2674429617924361, + -0.0, + 4.721233753827666, + 25.15090342499437, + 0.13574282218161704, + -0.0, + 0.27800587458183396, + -0.21363359645232158, + 29.91353184358888, + -0.0, + 89.69522857666016, + -72.82874298095703, + 81.09473419189453, + 1.0 + ], + "name": "Cylinder.007" + }, + { + "mesh": 55, + "name": "Cylinder.007_Material.002_0" + }, + { + "children": [ + 119 + ], + "matrix": [ + -21.47193650150846, + 4.029399484291579, + 0.22832942713528662, + -0.0, + 4.030753290938682, + 21.47258365849544, + 0.1158904336787534, + -0.0, + 0.22814669244022667, + -0.17531931114052857, + 24.548665957457256, + -0.0, + 126.5919418334961, + -6.885719299316406, + 81.22276306152344, + 1.0 + ], + "name": "Cylinder.008" + }, + { + "mesh": 56, + "name": "Cylinder.008_Material.004_0" + }, + { + "children": [ + 121 + ], + "matrix": [ + 7.512913703918457, + 0.0, + 0.0, + 0.0, + 0.0, + 7.51291370391845, + 3.283998880767341e-07, + 0.0, + 0.0, + -3.283998880767341e-07, + 7.51291370391845, + 0.0, + 150.81192016601563, + -35.99569320678711, + 20.727428436279297, + 1.0 + ], + "name": "Cylinder.009" + }, + { + "mesh": 57, + "name": "Cylinder.009_Material.012_0" + }, + { + "children": [ + 123 + ], + "matrix": [ + 26.807668844129, + -31.37217383409593, + -6.16659704693245e-06, + 0.0, + -3.8503687830674166e-05, + -4.101289065094845e-05, + 41.265777587852284, + 0.0, + -31.372173834072907, + -26.807668844098345, + -5.591568882870697e-05, + 0.0, + -53.700531005859375, + 8.996471405029297, + 1.5416436195373535, + 1.0 + ], + "name": "Cylinder.015" + }, + { + "mesh": 58, + "name": "Cylinder.015_Material.008_0" + } + ], + "scene": 0, + "scenes": [ + { + "name": "Sketchfab_Scene", + "nodes": [ + 0 + ] + } + ] +} diff --git a/xr/openxr_vehicle_movement/assets/gokart/scene.gltf.import b/xr/openxr_vehicle_movement/assets/gokart/scene.gltf.import new file mode 100644 index 0000000000..5a446815ed --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/gokart/scene.gltf.import @@ -0,0 +1,141 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://l0xjd05idone" +path="res://.godot/imported/scene.gltf-c2436fba3d1e33dddfd1073062d09a02.scn" + +[deps] + +source_file="res://assets/gokart/scene.gltf" +dest_files=["res://.godot/imported/scene.gltf-c2436fba3d1e33dddfd1073062d09a02.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +import_script/path="" +_subresources={ +"materials": { +"Cube.014__0": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Cube.014__0.tres" +}, +"Material": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.tres" +}, +"Material.001": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.001.tres" +}, +"Material.002": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.002.tres" +}, +"Material.003": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.003.tres" +}, +"Material.004": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.004.tres" +}, +"Material.005": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.005.tres" +}, +"Material.006": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.006.tres" +}, +"Material.007": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.007.tres" +}, +"Material.008": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.008.tres" +}, +"Material.009": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.009.tres" +}, +"Material.010": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.010.tres" +}, +"Material.011": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.011.tres" +}, +"Material.012": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.012.tres" +}, +"Material.013": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.013.tres" +}, +"Material.014": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.014.tres" +}, +"Material.015": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.015.tres" +}, +"Material.016": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.016.tres" +}, +"Material.017": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.017.tres" +}, +"Material.018": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.018.tres" +}, +"Material.019": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.019.tres" +}, +"Material.020": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.020.tres" +}, +"Material.021": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.021.tres" +}, +"Material.022": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.022.tres" +}, +"Material.023": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.023.tres" +}, +"Material.024": { +"use_external/enabled": true, +"use_external/path": "res://assets/gokart/materials/Material.024.tres" +} +} +} +gltf/naming_version=0 +gltf/embedded_image_handling=1 diff --git a/xr/openxr_vehicle_movement/assets/pattern.png b/xr/openxr_vehicle_movement/assets/pattern.png new file mode 100644 index 0000000000..8bf420b0d5 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/pattern.png differ diff --git a/xr/openxr_vehicle_movement/assets/pattern.png.import b/xr/openxr_vehicle_movement/assets/pattern.png.import new file mode 100644 index 0000000000..66d66fd80f --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/pattern.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rek0t7kubpx4" +path.s3tc="res://.godot/imported/pattern.png-cf6f03dfd1cdd4bc35da3414e912103d.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/pattern.png" +dest_files=["res://.godot/imported/pattern.png-cf6f03dfd1cdd4bc35da3414e912103d.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/xr/openxr_vehicle_movement/assets/polyhaven/kloofendal_48d_partly_cloudy_puresky_2k.hdr b/xr/openxr_vehicle_movement/assets/polyhaven/kloofendal_48d_partly_cloudy_puresky_2k.hdr new file mode 100644 index 0000000000..31843fc6a7 Binary files /dev/null and b/xr/openxr_vehicle_movement/assets/polyhaven/kloofendal_48d_partly_cloudy_puresky_2k.hdr differ diff --git a/xr/openxr_vehicle_movement/assets/polyhaven/kloofendal_48d_partly_cloudy_puresky_2k.hdr.import b/xr/openxr_vehicle_movement/assets/polyhaven/kloofendal_48d_partly_cloudy_puresky_2k.hdr.import new file mode 100644 index 0000000000..759372fbd9 --- /dev/null +++ b/xr/openxr_vehicle_movement/assets/polyhaven/kloofendal_48d_partly_cloudy_puresky_2k.hdr.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cijwjq531rxx8" +path.bptc="res://.godot/imported/kloofendal_48d_partly_cloudy_puresky_2k.hdr-281d7f6082316feb82fd929e10efe2c4.bptc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/polyhaven/kloofendal_48d_partly_cloudy_puresky_2k.hdr" +dest_files=["res://.godot/imported/kloofendal_48d_partly_cloudy_puresky_2k.hdr-281d7f6082316feb82fd929e10efe2c4.bptc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/xr/openxr_vehicle_movement/icon.svg b/xr/openxr_vehicle_movement/icon.svg new file mode 100644 index 0000000000..b370ceb727 --- /dev/null +++ b/xr/openxr_vehicle_movement/icon.svg @@ -0,0 +1 @@ + diff --git a/xr/openxr_vehicle_movement/icon.svg.import b/xr/openxr_vehicle_movement/icon.svg.import new file mode 100644 index 0000000000..f7e49a8f40 --- /dev/null +++ b/xr/openxr_vehicle_movement/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1s6lsinmhdj5" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/xr/openxr_vehicle_movement/main.tscn b/xr/openxr_vehicle_movement/main.tscn new file mode 100644 index 0000000000..6fbe375a6c --- /dev/null +++ b/xr/openxr_vehicle_movement/main.tscn @@ -0,0 +1,63 @@ +[gd_scene load_steps=12 format=3 uid="uid://db1q04xf4urua"] + +[ext_resource type="Texture2D" uid="uid://cijwjq531rxx8" path="res://assets/polyhaven/kloofendal_48d_partly_cloudy_puresky_2k.hdr" id="1_mp22n"] +[ext_resource type="Texture2D" uid="uid://rek0t7kubpx4" path="res://assets/pattern.png" id="1_sbpla"] +[ext_resource type="PackedScene" uid="uid://dkdk37kpjui3q" path="res://vehicle.tscn" id="2_x0meh"] +[ext_resource type="Script" path="res://start_vr.gd" id="3_d042y"] +[ext_resource type="PackedScene" uid="uid://du5twm6cwhq6j" path="res://track.tscn" id="4_ddbiu"] + +[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_k7hwg"] +panorama = ExtResource("1_mp22n") + +[sub_resource type="Sky" id="Sky_f7epq"] +sky_material = SubResource("PanoramaSkyMaterial_k7hwg") + +[sub_resource type="Environment" id="Environment_ctbfb"] +background_mode = 2 +sky = SubResource("Sky_f7epq") +ambient_light_sky_contribution = 0.5 +tonemap_mode = 2 +tonemap_white = 3.37 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jptbt"] +albedo_color = Color(0.211765, 0.717647, 0.160784, 1) +albedo_texture = ExtResource("1_sbpla") +uv1_scale = Vector3(100, 100, 100) + +[sub_resource type="PlaneMesh" id="PlaneMesh_judwf"] +size = Vector2(1000, 1000) +subdivide_width = 10 +subdivide_depth = 10 + +[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_k6vqu"] + +[node name="Main" type="Node3D"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_ctbfb") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.318358, -0.888444, -0.33063, 0.447532, -0.44832, 0.773772, -0.835681, 0.0983687, 0.540334, 0, 3.74613, 0) +light_energy = 0.5 +shadow_enabled = true +directional_shadow_mode = 0 +directional_shadow_max_distance = 10.0 + +[node name="Floor" type="StaticBody3D" parent="."] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Floor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.01, 0) +material_override = SubResource("StandardMaterial3D_jptbt") +mesh = SubResource("PlaneMesh_judwf") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Floor"] +shape = SubResource("WorldBoundaryShape3D_k6vqu") + +[node name="Vehicle" parent="." instance=ExtResource("2_x0meh")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.54837, 0.2, 0) + +[node name="StartVR" type="Node3D" parent="."] +script = ExtResource("3_d042y") +maximum_refresh_rate = 144 + +[node name="Track" parent="." instance=ExtResource("4_ddbiu")] diff --git a/xr/openxr_vehicle_movement/objects/black_out.gd b/xr/openxr_vehicle_movement/objects/black_out.gd new file mode 100644 index 0000000000..1750d12f00 --- /dev/null +++ b/xr/openxr_vehicle_movement/objects/black_out.gd @@ -0,0 +1,58 @@ +@tool +extends Node3D + +const LABEL_FORWARD_DIST : float = 2.5 + +@export_range(0, 1, 0.1) var fade = 0.0: + set(value): + fade = value + if is_inside_tree(): + _update_fade() + +var material : ShaderMaterial + +func _update_fade(): + if fade == 0.0: + $MeshInstance3D.visible = false + $Label3D.visible = false + set_process(false) + else: + # Update fade + if material: + material.set_shader_parameter("albedo", Color(0.0, 0.0, 0.0, fade)) + $MeshInstance3D.visible = true + + # Update label + $Label3D.modulate = Color(1.0, 1.0, 1.0, fade) + $Label3D.outline_modulate = Color(0.0, 0.0, 0.0, fade) + $Label3D.visible = true + set_process(true) + + +# Called when the node enters the scene tree for the first time. +func _ready(): + $Label3D.top_level = true + material = $MeshInstance3D.material_override + _update_fade() + + +# Called every frame +func _process(_delta): + if $Label3D.visible and !Engine.is_editor_hint(): + # Parent should be our camera + var parent : XRCamera3D = get_parent() + if !parent: + return + + var parent_transform = parent.global_transform + + # Determine forward + var forward = -parent_transform.basis.z + forward.y = 0.0 + forward = forward.normalized() + + # Move our label a fixed distance forward of the camera but + # nicely horizontally aligned. + var t : Transform3D + t.origin = parent_transform.origin + forward * LABEL_FORWARD_DIST + $Label3D.global_transform = t.looking_at(t.origin + forward, Vector3.UP, false) diff --git a/xr/openxr_vehicle_movement/objects/black_out.gdshader b/xr/openxr_vehicle_movement/objects/black_out.gdshader new file mode 100644 index 0000000000..e021b06732 --- /dev/null +++ b/xr/openxr_vehicle_movement/objects/black_out.gdshader @@ -0,0 +1,12 @@ +shader_type spatial; +render_mode blend_mix,depth_draw_opaque,cull_disabled,unshaded,depth_test_disabled; +uniform vec4 albedo : source_color; + +void vertex() { + POSITION = vec4(VERTEX.xy * 2.0, -1.0, 1.0); +} + +void fragment() { + ALBEDO = albedo.rgb; + ALPHA = albedo.a; +} diff --git a/xr/openxr_vehicle_movement/objects/black_out.tscn b/xr/openxr_vehicle_movement/objects/black_out.tscn new file mode 100644 index 0000000000..7e067037eb --- /dev/null +++ b/xr/openxr_vehicle_movement/objects/black_out.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=5 format=3 uid="uid://bbvciliw3xnf6"] + +[ext_resource type="Script" path="res://objects/black_out.gd" id="1_1r6dl"] +[ext_resource type="Shader" path="res://objects/black_out.gdshader" id="2_xc5vy"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ve0hd"] +resource_local_to_scene = true +render_priority = 90 +shader = ExtResource("2_xc5vy") +shader_parameter/albedo = Color(0, 0, 0, 0.1) + +[sub_resource type="QuadMesh" id="QuadMesh_iv1ir"] + +[node name="BlackOut" type="Node3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1) +script = ExtResource("1_1r6dl") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +visible = false +material_override = SubResource("ShaderMaterial_ve0hd") +mesh = SubResource("QuadMesh_iv1ir") + +[node name="Label3D" type="Label3D" parent="."] +top_level = true +visible = false +no_depth_test = true +render_priority = 99 +outline_render_priority = 98 +modulate = Color(1, 1, 1, 0.1) +outline_modulate = Color(0, 0, 0, 0.1) +text = "Please recenter display" diff --git a/xr/openxr_vehicle_movement/objects/hand.gd b/xr/openxr_vehicle_movement/objects/hand.gd new file mode 100644 index 0000000000..a0ecc003e7 --- /dev/null +++ b/xr/openxr_vehicle_movement/objects/hand.gd @@ -0,0 +1,32 @@ +extends XRController3D +class_name XRHand3D + +# TODO: Add nice meshes for hands, use tracker to know which one + + +func get_hand_mesh_path() -> NodePath: + return $Mesh.get_path() + + +func set_hand_mesh_toplevel(p_top_level : bool): + $Mesh.top_level = p_top_level + if !p_top_level: + # Reset transform + $Mesh.transform = Transform3D() + $GhostMesh.visible = false + else: + # Show our real hand position + $GhostMesh.visible = true + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pose = "hand_pose" # this sometimes gets lost + visible = false + %Collision.disabled = true + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta : float): + visible = get_has_tracking_data() + %Collision.disabled = !visible diff --git a/xr/openxr_vehicle_movement/objects/hand.tscn b/xr/openxr_vehicle_movement/objects/hand.tscn new file mode 100644 index 0000000000..88ae9ec3ef --- /dev/null +++ b/xr/openxr_vehicle_movement/objects/hand.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=5 format=3 uid="uid://cj3hkqph5hlf4"] + +[ext_resource type="Script" path="res://objects/hand.gd" id="1_othw4"] + +[sub_resource type="BoxMesh" id="BoxMesh_0f4wn"] +size = Vector3(0.1, 0.1, 0.1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_deu6v"] +transparency = 1 +albedo_color = Color(0.521569, 0.729412, 1, 0.533333) + +[sub_resource type="SphereShape3D" id="SphereShape3D_s1if8"] +radius = 0.1 + +[node name="Hand" type="XRController3D"] +tracker = &"left_hand" +pose = &"hand_pose" +script = ExtResource("1_othw4") + +[node name="Mesh" type="MeshInstance3D" parent="."] +mesh = SubResource("BoxMesh_0f4wn") + +[node name="GhostMesh" type="MeshInstance3D" parent="."] +material_override = SubResource("StandardMaterial3D_deu6v") +mesh = SubResource("BoxMesh_0f4wn") + +[node name="Body" type="AnimatableBody3D" parent="."] +collision_layer = 2 +collision_mask = 2 +sync_to_physics = false + +[node name="Collision" type="CollisionShape3D" parent="Body"] +unique_name_in_owner = true +shape = SubResource("SphereShape3D_s1if8") diff --git a/xr/openxr_vehicle_movement/openxr_action_map.tres b/xr/openxr_vehicle_movement/openxr_action_map.tres new file mode 100644 index 0000000000..50432d0d65 --- /dev/null +++ b/xr/openxr_vehicle_movement/openxr_action_map.tres @@ -0,0 +1,84 @@ +[gd_resource type="OpenXRActionMap" load_steps=19 format=3 uid="uid://b6o1742qdpkht"] + +[sub_resource type="OpenXRAction" id="OpenXRAction_bxnsb"] +resource_name = "hand_pose" +localized_name = "Hand pose" +action_type = 3 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_e4g8i"] +resource_name = "haptic" +localized_name = "Haptic" +action_type = 4 +toplevel_paths = PackedStringArray("/user/hand/left", "/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_c50bs"] +resource_name = "accelerate" +localized_name = "Accelerate" +toplevel_paths = PackedStringArray("/user/hand/right") + +[sub_resource type="OpenXRAction" id="OpenXRAction_ubf3p"] +resource_name = "brake" +localized_name = "Brake" +toplevel_paths = PackedStringArray("/user/hand/left") + +[sub_resource type="OpenXRActionSet" id="OpenXRActionSet_ucgoy"] +resource_name = "godot" +localized_name = "Godot action set" +actions = [SubResource("OpenXRAction_bxnsb"), SubResource("OpenXRAction_e4g8i"), SubResource("OpenXRAction_c50bs"), SubResource("OpenXRAction_ubf3p")] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_xbpfq"] +action = SubResource("OpenXRAction_bxnsb") +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_7tlrk"] +action = SubResource("OpenXRAction_e4g8i") +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_1xkvk"] +interaction_profile_path = "/interaction_profiles/khr/simple_controller" +bindings = [SubResource("OpenXRIPBinding_xbpfq"), SubResource("OpenXRIPBinding_7tlrk")] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_hc258"] +action = SubResource("OpenXRAction_bxnsb") +paths = PackedStringArray("/user/hand/right/input/grip/pose", "/user/hand/left/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_74yve"] +action = SubResource("OpenXRAction_ubf3p") +paths = PackedStringArray("/user/hand/left/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ptnl5"] +action = SubResource("OpenXRAction_e4g8i") +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_h4qn7"] +action = SubResource("OpenXRAction_c50bs") +paths = PackedStringArray("/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_1wcxx"] +interaction_profile_path = "/interaction_profiles/oculus/touch_controller" +bindings = [SubResource("OpenXRIPBinding_hc258"), SubResource("OpenXRIPBinding_74yve"), SubResource("OpenXRIPBinding_ptnl5"), SubResource("OpenXRIPBinding_h4qn7")] + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_ogt5l"] +action = SubResource("OpenXRAction_bxnsb") +paths = PackedStringArray("/user/hand/left/input/grip/pose", "/user/hand/right/input/grip/pose") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_yv8sp"] +action = SubResource("OpenXRAction_ubf3p") +paths = PackedStringArray("/user/hand/left/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_u607v"] +action = SubResource("OpenXRAction_c50bs") +paths = PackedStringArray("/user/hand/right/input/trigger/value") + +[sub_resource type="OpenXRIPBinding" id="OpenXRIPBinding_cypce"] +action = SubResource("OpenXRAction_e4g8i") +paths = PackedStringArray("/user/hand/left/output/haptic", "/user/hand/right/output/haptic") + +[sub_resource type="OpenXRInteractionProfile" id="OpenXRInteractionProfile_lg75g"] +interaction_profile_path = "/interaction_profiles/valve/index_controller" +bindings = [SubResource("OpenXRIPBinding_ogt5l"), SubResource("OpenXRIPBinding_yv8sp"), SubResource("OpenXRIPBinding_u607v"), SubResource("OpenXRIPBinding_cypce")] + +[resource] +action_sets = [SubResource("OpenXRActionSet_ucgoy")] +interaction_profiles = [SubResource("OpenXRInteractionProfile_1xkvk"), SubResource("OpenXRInteractionProfile_1wcxx"), SubResource("OpenXRInteractionProfile_lg75g")] diff --git a/xr/openxr_vehicle_movement/project.godot b/xr/openxr_vehicle_movement/project.godot new file mode 100644 index 0000000000..c3639c57db --- /dev/null +++ b/xr/openxr_vehicle_movement/project.godot @@ -0,0 +1,62 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="OpenXR Vehicle Movement" +run/main_scene="res://main.tscn" +config/features=PackedStringArray("4.2", "GL Compatibility") +config/icon="res://icon.svg" + +[input] + +turn_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null) +] +} +turn_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null) +] +} +accelerate={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null) +] +} +brake={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":4,"axis_value":1.0,"script":null) +] +} + +[layer_names] + +3d_physics/layer_1="World" +3d_physics/layer_2="Hands" + +[rendering] + +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" + +[xr] + +openxr/enabled=true +openxr/reference_space=0 +openxr/foveation_level=3 +openxr/foveation_dynamic=true +openxr/extensions/hand_tracking=false +shaders/enabled=true diff --git a/xr/openxr_vehicle_movement/screenshots/openxr_settings.png b/xr/openxr_vehicle_movement/screenshots/openxr_settings.png new file mode 100644 index 0000000000..c8e289fdef Binary files /dev/null and b/xr/openxr_vehicle_movement/screenshots/openxr_settings.png differ diff --git a/xr/openxr_vehicle_movement/screenshots/openxr_settings.png.import b/xr/openxr_vehicle_movement/screenshots/openxr_settings.png.import new file mode 100644 index 0000000000..e1d296a8ac --- /dev/null +++ b/xr/openxr_vehicle_movement/screenshots/openxr_settings.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dftr2sxyl5f5i" +path="res://.godot/imported/openxr_settings.png-5fca4df2ee9711fee86eeda2ba61d58a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshots/openxr_settings.png" +dest_files=["res://.godot/imported/openxr_settings.png-5fca4df2ee9711fee86eeda2ba61d58a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/xr/openxr_vehicle_movement/screenshots/vehicle_demo.png b/xr/openxr_vehicle_movement/screenshots/vehicle_demo.png new file mode 100644 index 0000000000..b75dca4218 Binary files /dev/null and b/xr/openxr_vehicle_movement/screenshots/vehicle_demo.png differ diff --git a/xr/openxr_vehicle_movement/screenshots/vehicle_demo.png.import b/xr/openxr_vehicle_movement/screenshots/vehicle_demo.png.import new file mode 100644 index 0000000000..a38cc27e68 --- /dev/null +++ b/xr/openxr_vehicle_movement/screenshots/vehicle_demo.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2is2fdqlm5oq" +path="res://.godot/imported/vehicle_demo.png-1c957e59a5b81eceef3440dd49d0bab5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshots/vehicle_demo.png" +dest_files=["res://.godot/imported/vehicle_demo.png-1c957e59a5b81eceef3440dd49d0bab5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/xr/openxr_vehicle_movement/shaders/transparent_textured.gdshader b/xr/openxr_vehicle_movement/shaders/transparent_textured.gdshader new file mode 100644 index 0000000000..2a6b8a47d0 --- /dev/null +++ b/xr/openxr_vehicle_movement/shaders/transparent_textured.gdshader @@ -0,0 +1,24 @@ +shader_type spatial; +render_mode unshaded; + +uniform sampler2D albedo_texture : source_color; +uniform bool use_vertex_uv; +uniform bool swap_uv; +uniform vec2 scale_uv = vec2(1.0, 1.0); +uniform vec2 offset_uv; + +void vertex() { + UV = VERTEX.xy * 0.5 + 0.5; + if (swap_uv) { + float swap = UV.x; + UV.x = UV.y; + UV.y = swap; + } + UV = offset_uv + UV * scale_uv; +} + +void fragment() { + vec4 color = texture(albedo_texture, UV); + ALBEDO = color.rgb; + ALPHA = color.a; +} diff --git a/xr/openxr_vehicle_movement/start_vr.gd b/xr/openxr_vehicle_movement/start_vr.gd new file mode 100644 index 0000000000..f2cfbbdc96 --- /dev/null +++ b/xr/openxr_vehicle_movement/start_vr.gd @@ -0,0 +1,110 @@ +extends Node3D + +signal focus_lost +signal focus_gained +signal pose_recentered + +@export var maximum_refresh_rate : int = 90 + +var xr_interface : OpenXRInterface +var xr_is_focussed = false + + +# Called when the node enters the scene tree for the first time. +func _ready(): + xr_interface = XRServer.find_interface("OpenXR") + if xr_interface and xr_interface.is_initialized(): + print("OpenXR instantiated successfully.") + var vp : Viewport = get_viewport() + + # Enable XR on our viewport + vp.use_xr = true + + # Make sure v-sync is off, v-sync is handled by OpenXR + DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED) + + # Enable VRS + if RenderingServer.get_rendering_device(): + vp.vrs_mode = Viewport.VRS_XR + elif int(ProjectSettings.get_setting("xr/openxr/foveation_level")) == 0: + print("OpenXR: Recommend setting Foveation level to High in Project Settings") + + # Connect the OpenXR events + xr_interface.session_begun.connect(_on_openxr_session_begun) + xr_interface.session_visible.connect(_on_openxr_visible_state) + xr_interface.session_focussed.connect(_on_openxr_focused_state) + xr_interface.session_stopping.connect(_on_openxr_stopping) + xr_interface.pose_recentered.connect(_on_openxr_pose_recentered) + else: + # We couldn't start OpenXR. + print("OpenXR not instantiated!") + get_tree().quit() + + +# Handle OpenXR session ready +func _on_openxr_session_begun() -> void: + # Get the reported refresh rate + var current_refresh_rate = xr_interface.get_display_refresh_rate() + if current_refresh_rate > 0: + print("OpenXR: Refresh rate reported as ", str(current_refresh_rate)) + else: + print("OpenXR: No refresh rate given by XR runtime") + + # See if we have a better refresh rate available + var new_rate = current_refresh_rate + var available_rates : Array = xr_interface.get_available_display_refresh_rates() + if available_rates.size() == 0: + print("OpenXR: Target does not support refresh rate extension") + elif available_rates.size() == 1: + # Only one available, so use it + new_rate = available_rates[0] + else: + for rate in available_rates: + if rate > new_rate and rate <= maximum_refresh_rate: + new_rate = rate + + # Did we find a better rate? + if current_refresh_rate != new_rate: + print("OpenXR: Setting refresh rate to ", str(new_rate)) + xr_interface.set_display_refresh_rate(new_rate) + current_refresh_rate = new_rate + + # Now match our physics rate + Engine.physics_ticks_per_second = current_refresh_rate + + +# Handle OpenXR visible state +func _on_openxr_visible_state() -> void: + # We always pass this state at startup, + # but the second time we get this it means our player took off their headset + if xr_is_focussed: + print("OpenXR lost focus") + + xr_is_focussed = false + + # pause our game + process_mode = Node.PROCESS_MODE_DISABLED + + emit_signal("focus_lost") + + +# Handle OpenXR focused state +func _on_openxr_focused_state() -> void: + print("OpenXR gained focus") + xr_is_focussed = true + + # unpause our game + process_mode = Node.PROCESS_MODE_INHERIT + + emit_signal("focus_gained") + +# Handle OpenXR stopping state +func _on_openxr_stopping() -> void: + # Our session is being stopped. + print("OpenXR is stopping") + +# Handle OpenXR pose recentered signal +func _on_openxr_pose_recentered() -> void: + # User recentered view, we have to react to this by recentering the view. + # This is game implementation dependent. + emit_signal("pose_recentered") diff --git a/xr/openxr_vehicle_movement/track.gd b/xr/openxr_vehicle_movement/track.gd new file mode 100644 index 0000000000..1e4ef82d7a --- /dev/null +++ b/xr/openxr_vehicle_movement/track.gd @@ -0,0 +1,37 @@ +@tool +extends Path3D + +@export var tire_spacing : float = 0.5: + set(value): + tire_spacing = value + if is_inside_tree(): + _update_tires() + +func _update_tires(): + var multimesh : MultiMesh = $Tirewall.multimesh + + # Cheap and dirty approach, need to improve this! + var track_length = curve.get_baked_length() + var tires_per_side = floor(track_length / tire_spacing) + var offset = 0.0 + + multimesh.instance_count = tires_per_side * 2 + for tire in range(tires_per_side): + var t : Transform3D = curve.sample_baked_with_rotation(offset) + + var t_adj : Transform3D = t + t_adj.origin += t_adj.basis.x * 5.0 + multimesh.set_instance_transform(tire, t_adj) + + t_adj = t + t_adj.origin -= t_adj.basis.x * 5.0 + multimesh.set_instance_transform(tires_per_side + tire, t_adj) + + offset += tire_spacing + +# Called when the node enters the scene tree for the first time. +func _ready(): + _update_tires() + + if Engine.is_editor_hint(): + curve_changed.connect(_update_tires) diff --git a/xr/openxr_vehicle_movement/track.tscn b/xr/openxr_vehicle_movement/track.tscn new file mode 100644 index 0000000000..eb9b1db135 --- /dev/null +++ b/xr/openxr_vehicle_movement/track.tscn @@ -0,0 +1,109 @@ +[gd_scene load_steps=8 format=3 uid="uid://du5twm6cwhq6j"] + +[ext_resource type="Script" path="res://track.gd" id="1_8qwqq"] +[ext_resource type="Texture2D" uid="uid://rek0t7kubpx4" path="res://assets/pattern.png" id="1_onscr"] + +[sub_resource type="Curve3D" id="Curve3D_3wmeb"] +_data = { +"points": PackedVector3Array(0.0292435, 0, 4.53269, -0.0292435, 0, -4.53269, -4.45862, 0, 9.64814, -1.14149, 0, 6.18867, 1.14149, 0, -6.18867, -3.99149, 0, -8.28683, -14.9627, 0, 0.252537, 14.9627, 0, -0.252537, 18.8009, 0, -21.0328, 7.67851, 0, -8.31507, -7.67851, 0, 8.31507, 44.826, 0, -1.48507, 9.71612, 0, -1.92427, -9.71612, 0, 1.92427, 21.5157, 0, -0.261784, -6.57491, 0, -3.79677, 6.57491, 0, 3.79677, 20.7089, 0, 18.5863, 1.11646, 0, -5.91727, -1.11646, 0, 5.91727, 35.0403, 0, 32.7914, 8.82008, 0, -0.44659, -8.82008, 0, 0.44659, 17.9251, 0, 42.3858, 1.13641, 0, 5.74518, -1.13641, 0, -5.74518, -3.8064, 0, 29.5953, -0.00488853, 0, 8.24115, 0.00488853, 0, -8.24115, -4.44825, 0, 10.0306), +"tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +} +point_count = 10 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w255p"] +albedo_texture = ExtResource("1_onscr") +uv1_scale = Vector3(0.25, 8, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p1lww"] +albedo_color = Color(0.109804, 0.109804, 0.109804, 1) + +[sub_resource type="CylinderMesh" id="CylinderMesh_3ddkd"] +material = SubResource("StandardMaterial3D_p1lww") +top_radius = 0.4 +bottom_radius = 0.4 +height = 0.35 + +[sub_resource type="MultiMesh" id="MultiMesh_tv7s7"] +transform_format = 1 +instance_count = 444 +mesh = SubResource("CylinderMesh_3ddkd") +buffer = PackedFloat32Array(0.999979, 0, 0.00645155, 0.541276, 0, 1, 0, 0, -0.00645155, 0, 0.999979, 9.61588, 0.999773, 0, 0.021308, 0.525661, 0, 1, 0, 0, -0.021308, 0, 0.999773, 8.54172, 0.999569, 0, 0.0293693, 0.498835, 0, 1, 0, 0, -0.0293693, 0, 0.999569, 7.50174, 0.99946, 0, 0.0328483, 0.466862, 0, 1, 0, 0, -0.0328483, 0, 0.99946, 6.48484, 0.999457, 0, 0.0329597, 0.433695, 0, 1, 0, 0, -0.0329597, 0, 0.999457, 5.48484, 0.999537, 0, 0.030415, 0.402215, 0, 1, 0, 0, -0.030415, 0, 0.999537, 4.49807, 0.999671, 0, 0.0256598, 0.374671, 0, 1, 0, 0, -0.0256598, 0, 0.999671, 3.52224, 0.99982, 0, 0.0189544, 0.352957, 0, 1, 0, 0, -0.0189544, 0, 0.99982, 2.55603, 0.999945, 0, 0.0104508, 0.338739, 0, 1, 0, 0, -0.0104508, 0, 0.999945, 1.59866, 1, 0, 0.000223214, 0.333534, 0, 1, 0, 0, -0.000223214, 0, 1, 0.649813, 0.999931, 0, -0.0117137, 0.338772, 0, 1, 0, 0, 0.0117137, 0, 0.999931, -0.290482, 0.999677, 0, -0.0254052, 0.355929, 0, 1, 0, 0, 0.0254052, 0, 0.999677, -1.22185, 0.999162, 0, -0.0409247, 0.386368, 0, 1, 0, 0, 0.0409247, 0, 0.999162, -2.14369, 0.998294, 0, -0.0583907, 0.431485, 0, 1, 0, 0, 0.0583907, 0, 0.998294, -3.05513, 0.996955, 0, -0.0779773, 0.492831, 0, 1, 0, 0, 0.0779773, 0, 0.996955, -3.95486, 0.995, 0, -0.0998713, 0.57174, 0, 1, 0, 0, 0.0998713, 0, 0.995, -4.84143, 0.99224, 0, -0.124337, 0.669844, 0, 1, 0, 0, 0.124337, 0, 0.99224, -5.71279, 0.988432, 0, -0.151662, 0.788568, 0, 1, 0, 0, 0.151662, 0, 0.988432, -6.5666, 0.983003, 0, -0.183587, 0.92813, 0, 1, 0, 0, 0.183587, 0, 0.983003, -7.39294, 0.962399, 0, -0.271641, 1.05301, 0, 1, 0, 0, 0.271641, 0, 0.962399, -7.926, 0.93471, 0, -0.355411, 1.22863, 0, 1, 0, 0, 0.355411, 0, 0.93471, -8.4562, 0.90089, 0, -0.434047, 1.45461, 0, 1, 0, 0, 0.434047, 0, 0.90089, -8.98132, 0.862026, 0, -0.506864, 1.73122, 0, 1, 0, 0, 0.506864, 0, 0.862026, -9.49909, 0.819269, 0, -0.573409, 2.05815, 0, 1, 0, 0, 0.573409, 0, 0.819269, -10.0073, 0.773755, 0, -0.633486, 2.43448, 0, 1, 0, 0, 0.633486, 0, 0.773755, -10.5036, 0.726569, 0, -0.687093, 2.85953, 0, 1, 0, 0, 0.687093, 0, 0.726569, -10.9857, 0.678644, 0, -0.734468, 3.33115, 0, 1, 0, 0, 0.734468, 0, 0.678644, -11.4515, 0.630794, 0, -0.77595, 3.84766, 0, 1, 0, 0, 0.77595, 0, 0.630794, -11.8987, 0.583647, 0, -0.812007, 4.40633, 0, 1, 0, 0, 0.812007, 0, 0.583647, -12.3255, 0.537681, 0, -0.843148, 5.00433, 0, 1, 0, 0, 0.843148, 0, 0.537681, -12.7306, 0.493273, 0, -0.869875, 5.63917, 0, 1, 0, 0, 0.869875, 0, 0.493273, -13.1122, 0.450632, 0, -0.89271, 6.30755, 0, 1, 0, 0, 0.89271, 0, 0.450632, -13.4698, 0.409899, 0, -0.912131, 7.00658, 0, 1, 0, 0, 0.912131, 0, 0.409899, -13.8028, 0.371131, 0, -0.928581, 7.73331, 0, 1, 0, 0, 0.928581, 0, 0.371131, -14.1109, 0.334338, 0, -0.942453, 8.48507, 0, 1, 0, 0, 0.942453, 0, 0.334338, -14.3941, 0.299483, 0, -0.954102, 9.25924, 0, 1, 0, 0, 0.954102, 0, 0.299483, -14.6526, 0.266504, 0, -0.963834, 10.0534, 0, 1, 0, 0, 0.963834, 0, 0.266504, -14.8868, 0.235328, 0, -0.971916, 10.8656, 0, 1, 0, 0, 0.971916, 0, 0.235328, -15.0972, 0.205856, 0, -0.978582, 11.6936, 0, 1, 0, 0, 0.978582, 0, 0.205856, -15.2843, 0.178001, 0, -0.98403, 12.5357, 0, 1, 0, 0, 0.98403, 0, 0.178001, -15.4489, 0.151666, 0, -0.988432, 13.3903, 0, 1, 0, 0, 0.988432, 0, 0.151666, -15.5915, 0.126753, 0, -0.991934, 14.256, 0, 1, 0, 0, 0.991934, 0, 0.126753, -15.7131, 0.103171, 0, -0.994664, 15.1315, 0, 1, 0, 0, 0.994664, 0, 0.103171, -15.8143, 0.0808296, 0, -0.996728, 16.0155, 0, 1, 0, 0, 0.996728, 0, 0.0808296, -15.8959, 0.059652, 0, -0.998219, 16.9071, 0, 1, 0, 0, 0.998219, 0, 0.059652, -15.9586, 0.0395539, 0, -0.999217, 17.8054, 0, 1, 0, 0, 0.999217, 0, 0.0395539, -16.0031, 0.0204647, 0, -0.999791, 18.7095, 0, 1, 0, 0, 0.999791, 0, 0.0204647, -16.0302, -0.0107633, 0, -0.999942, 19.5533, 0, 1, 0, 0, 0.999942, 0, -0.0107633, -16.0353, -0.0433128, 0, -0.999062, 20.3901, 0, 1, 0, 0, 0.999062, 0, -0.0433128, -16.0126, -0.074128, 0, -0.997249, 21.2343, 0, 1, 0, 0, 0.997249, 0, -0.074128, -15.9628, -0.103411, 0, -0.994639, 22.0839, 0, 1, 0, 0, 0.994639, 0, -0.103411, -15.8869, -0.13135, 0, -0.991336, 22.9372, 0, 1, 0, 0, 0.991336, 0, -0.13135, -15.786, -0.158115, 0, -0.987421, 23.7928, 0, 1, 0, 0, 0.987421, 0, -0.158115, -15.6607, -0.183869, 0, -0.982951, 24.6493, 0, 1, 0, 0, 0.982951, 0, -0.183869, -15.512, -0.208761, 0, -0.977967, 25.5053, 0, 1, 0, 0, 0.977967, 0, -0.208761, -15.3406, -0.232931, 0, -0.972493, 26.3597, 0, 1, 0, 0, 0.972493, 0, -0.232931, -15.147, -0.256515, 0, -0.96654, 27.2114, 0, 1, 0, 0, 0.96654, 0, -0.256515, -14.9321, -0.279637, 0, -0.960106, 28.0591, 0, 1, 0, 0, 0.960106, 0, -0.279637, -14.696, -0.302425, 0, -0.953173, 28.9019, 0, 1, 0, 0, 0.953173, 0, -0.302425, -14.4397, -0.325, 0, -0.945714, 29.7385, 0, 1, 0, 0, 0.945714, 0, -0.325, -14.1632, -0.347485, 0, -0.937686, 30.5678, 0, 1, 0, 0, 0.937686, 0, -0.347485, -13.8672, -0.370006, 0, -0.929029, 31.3886, 0, 1, 0, 0, 0.929029, 0, -0.370006, -13.5517, -0.392691, 0, -0.91967, 32.1996, 0, 1, 0, 0, 0.91967, 0, -0.392691, -13.2172, -0.415684, 0, -0.909509, 32.9993, 0, 1, 0, 0, 0.909509, 0, -0.415684, -12.8638, -0.439127, 0, -0.898425, 33.7861, 0, 1, 0, 0, 0.898425, 0, -0.439127, -12.4919, -0.463187, 0, -0.886261, 34.5583, 0, 1, 0, 0, 0.886261, 0, -0.463187, -12.1016, -0.488048, 0, -0.872817, 35.3136, 0, 1, 0, 0, 0.872817, 0, -0.488048, -11.6933, -0.51391, 0, -0.857844, 36.0498, 0, 1, 0, 0, 0.857844, 0, -0.51391, -11.2673, -0.541007, 0, -0.841018, 36.7639, 0, 1, 0, 0, 0.841018, 0, -0.541007, -10.8241, -0.569604, 0, -0.821919, 37.4526, 0, 1, 0, 0, 0.821919, 0, -0.569604, -10.3644, -0.600021, 0, -0.799984, 38.1117, 0, 1, 0, 0, 0.799984, 0, -0.600021, -9.88939, -0.632584, 0, -0.774491, 38.7365, 0, 1, 0, 0, 0.774491, 0, -0.632584, -9.40078, -0.667698, 0, -0.744432, 39.3208, 0, 1, 0, 0, 0.744432, 0, -0.667698, -8.90112, -0.705751, 0, -0.70846, 39.8575, 0, 1, 0, 0, 0.70846, 0, -0.705751, -8.39453, -0.747105, 0, -0.664706, 40.3381, 0, 1, 0, 0, 0.664706, 0, -0.747105, -7.88719, -0.791957, 0, -0.610576, 40.7525, 0, 1, 0, 0, 0.610576, 0, -0.791957, -7.38858, -0.84001, 0, -0.542571, 41.0902, 0, 1, 0, 0, 0.542571, 0, -0.84001, -6.91288, -0.889928, 0, -0.456101, 41.3416, 0, 1, 0, 0, 0.456101, 0, -0.889928, -6.48031, -0.938258, 0, -0.345936, 41.5033, 0, 1, 0, 0, 0.345936, 0, -0.938258, -6.11672, -0.978167, 0, -0.207821, 41.583, 0, 1, 0, 0, 0.207821, 0, -0.978167, -5.84799, -0.999092, 0, -0.0426166, 41.6056, 0, 1, 0, 0, 0.0426166, 0, -0.999092, -5.68334, -0.990303, 0, 0.138927, 41.602, 0, 1, 0, 0, -0.138927, 0, -0.990303, -5.59359, -0.94851, 0, 0.316747, 41.5819, 0, 1, 0, 0, -0.316747, 0, -0.94851, -5.51075, -0.881819, 0, 0.471588, 41.5187, 0, 1, 0, 0, -0.471588, 0, -0.881819, -5.36831, -0.803929, 0, 0.594725, 41.3724, 0, 1, 0, 0, -0.594725, 0, -0.803929, -5.14067, -0.730421, 0, 0.682997, 41.0967, 0, 1, 0, 0, -0.682997, 0, -0.730421, -4.81711, -0.68759, 0, 0.726099, 40.6067, 0, 1, 0, 0, -0.726099, 0, -0.68759, -4.32277, -0.633085, 0, 0.774082, 40.1296, 0, 1, 0, 0, -0.774082, 0, -0.633085, -3.90125, -0.563848, 0, 0.825879, 39.676, 0, 1, 0, 0, -0.825879, 0, -0.563848, -3.56042, -0.477283, 0, 0.87875, 39.2564, 0, 1, 0, 0, -0.87875, 0, -0.477283, -3.30284, -0.373016, 0, 0.927825, 38.8738, 0, 1, 0, 0, -0.927825, 0, -0.373016, -3.12181, -0.255028, 0, 0.966934, 38.5154, 0, 1, 0, 0, -0.966934, 0, -0.255028, -3.00222, -0.132346, 0, 0.991204, 38.1484, 0, 1, 0, 0, -0.991204, 0, -0.132346, -2.92977, -0.0165498, 0, 0.999863, 37.7307, 0, 1, 0, 0, -0.999863, 0, -0.0165498, -2.89969, 0.08307, 0, 0.996544, 37.2298, 0, 1, 0, 0, -0.996544, 0, 0.08307, -2.91798, 0.162088, 0, 0.986776, 36.6329, 0, 1, 0, 0, -0.986776, 0, 0.162088, -2.99358, 0.220294, 0, 0.975434, 35.9429, 0, 1, 0, 0, -0.975434, 0, 0.220294, -3.12982, 0.259647, 0, 0.965704, 35.1693, 0, 1, 0, 0, -0.965704, 0, 0.259647, -3.32262, 0.282609, 0, 0.959235, 34.3219, 0, 1, 0, 0, -0.959235, 0, 0.282609, -3.56262, 0.291203, 0, 0.956661, 33.4073, 0, 1, 0, 0, -0.956661, 0, 0.291203, -3.8378, 0.28722, 0, 0.957865, 32.4304, 0, 1, 0, 0, -0.957865, 0, 0.28722, -4.13403, 0.271759, 0, 0.962365, 31.3932, 0, 1, 0, 0, -0.962365, 0, 0.271759, -4.43696, 0.245598, 0, 0.969372, 30.2967, 0, 1, 0, 0, -0.969372, 0, 0.245598, -4.73147, 0.20948, 0, 0.977813, 29.1426, 0, 1, 0, 0, -0.977813, 0, 0.20948, -5.00198, 0.164135, 0, 0.986438, 27.9337, 0, 1, 0, 0, -0.986438, 0, 0.164135, -5.23264, 0.110592, 0, 0.993866, 26.6757, 0, 1, 0, 0, -0.993866, 0, 0.110592, -5.40802, 0.0501889, 0, 0.99874, 25.3772, 0, 1, 0, 0, -0.99874, 0, 0.0501889, -5.51323, -0.0151742, 0, 0.999885, 24.0507, 0, 1, 0, 0, -0.999885, 0, -0.0151742, -5.53679, -0.0833027, 0, 0.996524, 22.7114, 0, 1, 0, 0, -0.996524, 0, -0.0833027, -5.47086, -0.151882, 0, 0.988399, 21.3757, 0, 1, 0, 0, -0.988399, 0, -0.151882, -5.31257, -0.228021, 0, 0.973656, 20.0129, 0, 1, 0, 0, -0.973656, 0, -0.228021, -5.05166, -0.326216, 0, 0.945295, 18.5613, 0, 1, 0, 0, -0.945295, 0, -0.326216, -4.63358, -0.433449, 0, 0.901178, 17.1004, 0, 1, 0, 0, -0.901178, 0, -0.433449, -4.03386, -0.545607, 0, 0.838041, 15.6685, 0, 1, 0, 0, -0.838041, 0, -0.545607, -3.22861, -0.65595, 0, 0.754804, 14.3189, 0, 1, 0, 0, -0.754804, 0, -0.65595, -2.21099, -0.756583, 0, 0.653897, 13.1098, 0, 1, 0, 0, -0.653897, 0, -0.756583, -0.999378, -0.840902, 0, 0.541188, 12.0902, 0, 1, 0, 0, -0.541188, 0, -0.840902, 0.364599, -0.905626, 0, 0.424076, 11.284, 0, 1, 0, 0, -0.424076, 0, -0.905626, 1.82511, -0.951064, 0, 0.308994, 10.6904, 0, 1, 0, 0, -0.308994, 0, -0.951064, 3.33026, -0.979758, 0, 0.200187, 10.2932, 0, 1, 0, 0, -0.200187, 0, -0.979758, 4.84102, -0.995047, 0, 0.0994015, 10.0676, 0, 1, 0, 0, -0.0994015, 0, -0.995047, 6.33329, -0.999977, 0, 0.00685796, 9.99058, 0, 1, 0, 0, -0.00685796, 0, -0.999977, 7.79428, -0.996934, 0, -0.0782512, 10.0418, 0, 1, 0, 0, 0.0782512, 0, -0.996934, 9.21886, -0.987595, 0, -0.15702, 10.2068, 0, 1, 0, 0, 0.15702, 0, -0.987595, 10.6054, -0.97301, 0, -0.230762, 10.4741, 0, 1, 0, 0, 0.230762, 0, -0.97301, 11.9548, -0.953719, 0, -0.300699, 10.8365, 0, 1, 0, 0, 0.300699, 0, -0.953719, 13.2682, -0.929845, 0, -0.367952, 11.2903, 0, 1, 0, 0, 0.367952, 0, -0.929845, 14.5467, -0.901145, 0, -0.433518, 11.8344, 0, 1, 0, 0, 0.433518, 0, -0.901145, 15.7905, -0.867018, 0, -0.498277, 12.4712, 0, 1, 0, 0, 0.498277, 0, -0.867018, 16.9988, -0.826512, 0, -0.562919, 13.2044, 0, 1, 0, 0, 0.562919, 0, -0.826512, 18.1693, -0.778298, 0, -0.627895, 14.0408, 0, 1, 0, 0, 0.627895, 0, -0.778298, 19.2973, -0.720646, 0, -0.693303, 14.9894, 0, 1, 0, 0, 0.693303, 0, -0.720646, 20.3748, -0.651416, 0, -0.75872, 16.0618, 0, 1, 0, 0, 0.75872, 0, -0.651416, 21.3888, -0.568437, 0, -0.822727, 17.2674, 0, 1, 0, 0, 0.822727, 0, -0.568437, 22.3203, -0.498634, 0, -0.866813, 18.4673, 0, 1, 0, 0, 0.866813, 0, -0.498634, 23.0653, -0.49564, 0, -0.868528, 19.3501, 0, 1, 0, 0, 0.868528, 0, -0.49564, 23.5708, -0.495472, 0, -0.868624, 20.2196, 0, 1, 0, 0, 0.868624, 0, -0.495472, 24.0666, -0.497835, 0, -0.867272, 21.0759, 0, 1, 0, 0, 0.867272, 0, -0.497835, 24.5563, -0.502605, 0, -0.864516, 21.918, 0, 1, 0, 0, 0.864516, 0, -0.502605, 25.0425, -0.509735, 0, -0.860332, 22.7449, 0, 1, 0, 0, 0.860332, 0, -0.509735, 25.5276, -0.519259, 0, -0.854617, 23.5549, 0, 1, 0, 0, 0.854617, 0, -0.519259, 26.0133, -0.531303, 0, -0.847182, 24.3458, 0, 1, 0, 0, 0.847182, 0, -0.531303, 26.5012, -0.546101, 0, -0.837719, 25.1144, 0, 1, 0, 0, 0.837719, 0, -0.546101, 26.9924, -0.563937, 0, -0.825818, 25.8572, 0, 1, 0, 0, 0.825818, 0, -0.563937, 27.4876, -0.58521, 0, -0.810882, 26.5696, 0, 1, 0, 0, 0.810882, 0, -0.58521, 27.9872, -0.610479, 0, -0.792032, 27.245, 0, 1, 0, 0, 0.792032, 0, -0.610479, 28.4905, -0.640368, 0, -0.768068, 27.8761, 0, 1, 0, 0, 0.768068, 0, -0.640368, 28.9956, -0.675646, 0, -0.737226, 28.453, 0, 1, 0, 0, 0.737226, 0, -0.675646, 29.4989, -0.717131, 0, -0.696939, 28.9636, 0, 1, 0, 0, 0.696939, 0, -0.717131, 29.9933, -0.765424, 0, -0.643527, 29.3937, 0, 1, 0, 0, 0.643527, 0, -0.765424, 30.4669, -0.820394, 0, -0.571799, 29.7282, 0, 1, 0, 0, 0.571799, 0, -0.820394, 30.9007, -0.879887, 0, -0.475184, 29.9567, 0, 1, 0, 0, 0.475184, 0, -0.879887, 31.2675, -0.937779, 0, -0.347234, 30.0812, 0, 1, 0, 0, 0.347234, 0, -0.937779, 31.5371, -0.982435, 0, -0.186604, 30.1276, 0, 1, 0, 0, 0.186604, 0, -0.982435, 31.6957, -0.999993, 0, -0.00379913, 30.1357, 0, 1, 0, 0, 0.00379913, 0, -0.999993, 31.7756, -0.983973, 0, 0.178316, 30.1275, 0, 1, 0, 0, -0.178316, 0, -0.983973, 31.8597, -0.954666, 0, 0.297678, 30.0351, 0, 1, 0, 0, -0.297678, 0, -0.954666, 32.2333, -0.911384, 0, 0.411558, 29.8964, 0, 1, 0, 0, -0.411558, 0, -0.911384, 32.598, -0.856243, 0, 0.516573, 29.707, 0, 1, 0, 0, -0.516573, 0, -0.856243, 32.9575, -0.793296, 0, 0.608836, 29.4579, 0, 1, 0, 0, -0.608836, 0, -0.793296, 33.3214, -0.726844, 0, 0.686803, 29.1412, 0, 1, 0, 0, -0.686803, 0, -0.726844, 33.6918, -0.660435, 0, 0.750883, 28.7533, 0, 1, 0, 0, -0.750883, 0, -0.660435, 34.0649, -0.596451, 0, 0.802649, 28.2954, 0, 1, 0, 0, -0.802649, 0, -0.596451, 34.4342, -0.536185, 0, 0.844101, 27.7727, 0, 1, 0, 0, -0.844101, 0, -0.536185, 34.793, -0.480221, 0, 0.877147, 27.1912, 0, 1, 0, 0, -0.877147, 0, -0.480221, 35.1355, -0.428563, 0, 0.903512, 26.5587, 0, 1, 0, 0, -0.903512, 0, -0.428563, 35.4577, -0.381, 0, 0.924575, 25.8821, 0, 1, 0, 0, -0.924575, 0, -0.381, 35.7568, -0.337181, 0, 0.94144, 25.1678, 0, 1, 0, 0, -0.94144, 0, -0.337181, 36.0313, -0.296704, 0, 0.954969, 24.4218, 0, 1, 0, 0, -0.954969, 0, -0.296704, 36.2804, -0.259203, 0, 0.965823, 23.6487, 0, 1, 0, 0, -0.965823, 0, -0.259203, 36.5037, -0.22428, 0, 0.974525, 22.853, 0, 1, 0, 0, -0.974525, 0, -0.22428, 36.7019, -0.19164, 0, 0.981465, 22.0381, 0, 1, 0, 0, -0.981465, 0, -0.19164, 36.8749, -0.160966, 0, 0.98696, 21.2071, 0, 1, 0, 0, -0.98696, 0, -0.160966, 37.0235, -0.132005, 0, 0.991249, 20.3627, 0, 1, 0, 0, -0.991249, 0, -0.132005, 37.1484, -0.10453, 0, 0.994522, 19.5071, 0, 1, 0, 0, -0.994522, 0, -0.10453, 37.2503, -0.0783523, 0, 0.996926, 18.6422, 0, 1, 0, 0, -0.996926, 0, -0.0783523, 37.3296, -0.0532937, 0, 0.998579, 17.7697, 0, 1, 0, 0, -0.998579, 0, -0.0532937, 37.3871, 0.0077951, 0, 0.99997, 17.0756, 0, 1, 0, 0, -0.99997, 0, 0.0077951, 37.4044, 0.066997, 0, 0.997753, 16.3725, 0, 1, 0, 0, -0.997753, 0, 0.066997, 37.3776, 0.120175, 0, 0.992753, 15.6429, 0, 1, 0, 0, -0.992753, 0, 0.120175, 37.3086, 0.168198, 0, 0.985753, 14.8937, 0, 1, 0, 0, -0.985753, 0, 0.168198, 37.199, 0.211863, 0, 0.977299, 14.1304, 0, 1, 0, 0, -0.977299, 0, 0.211863, 37.0509, 0.251868, 0, 0.967762, 13.3578, 0, 1, 0, 0, -0.967762, 0, 0.251868, 36.8665, 0.288833, 0, 0.957379, 12.58, 0, 1, 0, 0, -0.957379, 0, 0.288833, 36.6477, 0.323291, 0, 0.9463, 11.8004, 0, 1, 0, 0, -0.9463, 0, 0.323291, 36.3969, 0.355698, 0, 0.934601, 11.0219, 0, 1, 0, 0, -0.934601, 0, 0.355698, 36.1157, 0.386468, 0, 0.922303, 10.2473, 0, 1, 0, 0, -0.922303, 0, 0.386468, 35.8061, 0.415964, 0, 0.909381, 9.47885, 0, 1, 0, 0, -0.909381, 0, 0.415964, 35.4693, 0.444519, 0, 0.89577, 8.71901, 0, 1, 0, 0, -0.89577, 0, 0.444519, 35.1071, 0.472445, 0, 0.88136, 7.97001, 0, 1, 0, 0, -0.88136, 0, 0.472445, 34.7206, 0.500046, 0, 0.865999, 7.23425, 0, 1, 0, 0, -0.865999, 0, 0.500046, 34.3112, 0.527624, 0, 0.849478, 6.5143, 0, 1, 0, 0, -0.849478, 0, 0.527624, 33.88, 0.555496, 0, 0.831519, 5.81302, 0, 1, 0, 0, -0.831519, 0, 0.555496, 33.4283, 0.584003, 0, 0.811752, 5.13375, 0, 1, 0, 0, -0.811752, 0, 0.584003, 32.9574, 0.613523, 0, 0.789677, 4.4804, 0, 1, 0, 0, -0.789677, 0, 0.613523, 32.4692, 0.644501, 0, 0.764603, 3.85789, 0, 1, 0, 0, -0.764603, 0, 0.644501, 31.9656, 0.677437, 0, 0.735581, 3.27208, 0, 1, 0, 0, -0.735581, 0, 0.677437, 31.45, 0.712975, 0, 0.701189, 2.73103, 0, 1, 0, 0, -0.701189, 0, 0.712975, 30.9268, 0.751765, 0, 0.659431, 2.24392, 0, 1, 0, 0, -0.659431, 0, 0.751765, 30.4036, 0.794574, 0, 0.607167, 1.82352, 0, 1, 0, 0, -0.607167, 0, 0.794574, 29.8922, 0.842003, 0, 0.539473, 1.48574, 0, 1, 0, 0, -0.539473, 0, 0.842003, 29.4128, 0.893757, 0, 0.448552, 1.24807, 0, 1, 0, 0, -0.448552, 0, 0.893757, 28.9999, 0.946677, 0, 0.322183, 1.12395, 0, 1, 0, 0, -0.322183, 0, 0.946677, 28.7112, 0.982413, 0, 0.186722, 1.05879, 0, 1, 0, 0, -0.186722, 0, 0.982413, 28.4198, 0.987505, 0, 0.15759, 0.912172, 0, 1, 0, 0, -0.15759, 0, 0.987505, 27.5804, 0.991537, 0, 0.129825, 0.788799, 0, 1, 0, 0, -0.129825, 0, 0.991537, 26.7296, 0.994584, 0, 0.103934, 0.687308, 0, 1, 0, 0, -0.103934, 0, 0.994584, 25.8659, 0.996768, 0, 0.0803376, 0.606292, 0, 1, 0, 0, -0.0803376, 0, 0.996768, 24.9882, 0.998238, 0, 0.0593319, 0.544058, 0, 1, 0, 0, -0.0593319, 0, 0.998238, 24.0956, 0.999156, 0, 0.041074, 0.498679, 0, 1, 0, 0, -0.041074, 0, 0.999156, 23.1882, 0.999672, 0, 0.0256094, 0.468147, 0, 1, 0, 0, -0.0256094, 0, 0.999672, 22.2661, 0.999917, 0, 0.0128816, 0.450353, 0, 1, 0, 0, -0.0128816, 0, 0.999917, 21.3299, 0.999996, 0, 0.00275434, 0.443141, 0, 1, 0, 0, -0.00275434, 0, 0.999996, 20.3806, 0.999988, 0, -0.00496499, 0.444381, 0, 1, 0, 0, 0.00496499, 0, 0.999988, 19.4192, 0.999945, 0, -0.0104831, 0.452077, 0, 1, 0, 0, 0.0104831, 0, 0.999945, 18.4468, 0.999901, 0, -0.014052, 0.464272, 0, 1, 0, 0, 0.014052, 0, 0.999901, 17.4647, 0.999874, 0, -0.0158932, 0.479242, 0, 1, 0, 0, 0.0158932, 0, 0.999874, 16.474, 0.999868, 0, -0.0162388, 0.495396, 0, 1, 0, 0, 0.0162388, 0, 0.999868, 15.4759, 0.999883, 0, -0.0153023, 0.51134, 0, 1, 0, 0, 0.0153023, 0, 0.999883, 14.4714, 0.999912, 0, -0.0132726, 0.525852, 0, 1, 0, 0, 0.0132726, 0, 0.999912, 13.4613, 0.999947, 0, -0.0103287, 0.537892, 0, 1, 0, 0, 0.0103287, 0, 0.999947, 12.4466, 0.999978, 0, -0.00662664, 0.546588, 0, 1, 0, 0, 0.00662664, 0, 0.999978, 11.4282, 0.999979, 0, 0.00645155, -9.45852, 0, 1, 0, 0, -0.00645155, 0, 0.999979, 9.6804, 0.999773, 0, 0.021308, -9.47207, 0, 1, 0, 0, -0.021308, 0, 0.999773, 8.7548, 0.999569, 0, 0.0293693, -9.49685, 0, 1, 0, 0, -0.0293693, 0, 0.999569, 7.79544, 0.99946, 0, 0.0328483, -9.52774, 0, 1, 0, 0, -0.0328483, 0, 0.99946, 6.81333, 0.999457, 0, 0.0329597, -9.56087, 0, 1, 0, 0, -0.0329597, 0, 0.999457, 5.81443, 0.999537, 0, 0.030415, -9.59316, 0, 1, 0, 0, -0.030415, 0, 0.999537, 4.80222, 0.999671, 0, 0.0256598, -9.62204, 0, 1, 0, 0, -0.0256598, 0, 0.999671, 3.77884, 0.99982, 0, 0.0189544, -9.64525, 0, 1, 0, 0, -0.0189544, 0, 0.99982, 2.74557, 0.999945, 0, 0.0104508, -9.66072, 0, 1, 0, 0, -0.0104508, 0, 0.999945, 1.70316, 1, 0, 0.000223214, -9.66647, 0, 1, 0, 0, -0.000223214, 0, 1, 0.652045, 0.999931, 0, -0.0117137, -9.66054, 0, 1, 0, 0, 0.0117137, 0, 0.999931, -0.407619, 0.999677, 0, -0.0254052, -9.64084, 0, 1, 0, 0, 0.0254052, 0, 0.999677, -1.4759, 0.999162, 0, -0.0409247, -9.60526, 0, 1, 0, 0, 0.0409247, 0, 0.999162, -2.55294, 0.998294, 0, -0.0583907, -9.55145, 0, 1, 0, 0, 0.0583907, 0, 0.998294, -3.63903, 0.996955, 0, -0.0779773, -9.47672, 0, 1, 0, 0, 0.0779773, 0, 0.996955, -4.73463, 0.995, 0, -0.0998713, -9.37826, 0, 1, 0, 0, 0.0998713, 0, 0.995, -5.84014, 0.99224, 0, -0.124337, -9.25256, 0, 1, 0, 0, 0.124337, 0, 0.99224, -6.95616, 0.988432, 0, -0.151662, -9.09576, 0, 1, 0, 0, 0.151662, 0, 0.988432, -8.08322, 0.983003, 0, -0.183587, -8.90191, 0, 1, 0, 0, 0.183587, 0, 0.983003, -9.22881, 0.962399, 0, -0.271641, -8.57097, 0, 1, 0, 0, 0.271641, 0, 0.962399, -10.6424, 0.93471, 0, -0.355411, -8.11847, 0, 1, 0, 0, 0.355411, 0, 0.93471, -12.0103, 0.90089, 0, -0.434047, -7.55429, 0, 1, 0, 0, 0.434047, 0, 0.90089, -13.3218, 0.862026, 0, -0.506864, -6.88905, 0, 1, 0, 0, 0.506864, 0, 0.862026, -14.5677, 0.819269, 0, -0.573409, -6.13455, 0, 1, 0, 0, 0.573409, 0, 0.819269, -15.7413, 0.773755, 0, -0.633486, -5.30307, 0, 1, 0, 0, 0.633486, 0, 0.773755, -16.8385, 0.726569, 0, -0.687093, -4.40616, 0, 1, 0, 0, 0.687093, 0, 0.726569, -17.8566, 0.678644, 0, -0.734468, -3.45528, 0, 1, 0, 0, 0.734468, 0, 0.678644, -18.7962, 0.630794, 0, -0.77595, -2.46028, 0, 1, 0, 0, 0.77595, 0, 0.630794, -19.6582, 0.583647, 0, -0.812007, -1.43014, 0, 1, 0, 0, 0.812007, 0, 0.583647, -20.4456, 0.537681, 0, -0.843148, -0.372482, 0, 1, 0, 0, 0.843148, 0, 0.537681, -21.162, 0.493273, 0, -0.869875, 0.706439, 0, 1, 0, 0, 0.869875, 0, 0.493273, -21.811, 0.450632, 0, -0.89271, 1.80123, 0, 1, 0, 0, 0.89271, 0, 0.450632, -22.3969, 0.409899, 0, -0.912131, 2.90759, 0, 1, 0, 0, 0.912131, 0, 0.409899, -22.9241, 0.371131, 0, -0.928581, 4.022, 0, 1, 0, 0, 0.928581, 0, 0.371131, -23.3968, 0.334338, 0, -0.942453, 5.14169, 0, 1, 0, 0, 0.942453, 0, 0.334338, -23.8187, 0.299483, 0, -0.954102, 6.26441, 0, 1, 0, 0, 0.954102, 0, 0.299483, -24.1936, 0.266504, 0, -0.963834, 7.3884, 0, 1, 0, 0, 0.963834, 0, 0.266504, -24.5252, 0.235328, 0, -0.971916, 8.51229, 0, 1, 0, 0, 0.971916, 0, 0.235328, -24.8163, 0.205856, 0, -0.978582, 9.635, 0, 1, 0, 0, 0.978582, 0, 0.205856, -25.0701, 0.178001, 0, -0.98403, 10.7557, 0, 1, 0, 0, 0.98403, 0, 0.178001, -25.2892, 0.151666, 0, -0.988432, 11.8737, 0, 1, 0, 0, 0.988432, 0, 0.151666, -25.4759, 0.126753, 0, -0.991934, 12.9885, 0, 1, 0, 0, 0.991934, 0, 0.126753, -25.6325, 0.103171, 0, -0.994664, 14.0998, 0, 1, 0, 0, 0.994664, 0, 0.103171, -25.761, 0.0808296, 0, -0.996728, 15.2072, 0, 1, 0, 0, 0.996728, 0, 0.0808296, -25.8632, 0.059652, 0, -0.998219, 16.3106, 0, 1, 0, 0, 0.998219, 0, 0.059652, -25.9408, 0.0395539, 0, -0.999217, 17.4099, 0, 1, 0, 0, 0.999217, 0, 0.0395539, -25.9953, 0.0204647, 0, -0.999791, 18.5048, 0, 1, 0, 0, 0.999791, 0, 0.0204647, -26.0281, -0.0107633, 0, -0.999942, 19.6609, 0, 1, 0, 0, 0.999942, 0, -0.0107633, -26.0348, -0.0433128, 0, -0.999062, 20.8233, 0, 1, 0, 0, 0.999062, 0, -0.0433128, -26.0032, -0.074128, 0, -0.997249, 21.9756, 0, 1, 0, 0, 0.997249, 0, -0.074128, -25.9353, -0.103411, 0, -0.994639, 23.118, 0, 1, 0, 0, 0.994639, 0, -0.103411, -25.8333, -0.13135, 0, -0.991336, 24.2507, 0, 1, 0, 0, 0.991336, 0, -0.13135, -25.6993, -0.158115, 0, -0.987421, 25.374, 0, 1, 0, 0, 0.987421, 0, -0.158115, -25.5349, -0.183869, 0, -0.982951, 26.488, 0, 1, 0, 0, 0.982951, 0, -0.183869, -25.3415, -0.208761, 0, -0.977967, 27.5929, 0, 1, 0, 0, 0.977967, 0, -0.208761, -25.1202, -0.232931, 0, -0.972493, 28.689, 0, 1, 0, 0, 0.972493, 0, -0.232931, -24.8719, -0.256515, 0, -0.96654, 29.7765, 0, 1, 0, 0, 0.96654, 0, -0.256515, -24.5975, -0.279637, 0, -0.960106, 30.8555, 0, 1, 0, 0, 0.960106, 0, -0.279637, -24.2971, -0.302425, 0, -0.953173, 31.9261, 0, 1, 0, 0, 0.953173, 0, -0.302425, -23.9714, -0.325, 0, -0.945714, 32.9885, 0, 1, 0, 0, 0.945714, 0, -0.325, -23.6204, -0.347485, 0, -0.937686, 34.0427, 0, 1, 0, 0, 0.937686, 0, -0.347485, -23.244, -0.370006, 0, -0.929029, 35.0887, 0, 1, 0, 0, 0.929029, 0, -0.370006, -22.842, -0.392691, 0, -0.91967, 36.1265, 0, 1, 0, 0, 0.91967, 0, -0.392691, -22.4139, -0.415684, 0, -0.909509, 37.1561, 0, 1, 0, 0, 0.909509, 0, -0.415684, -21.9589, -0.439127, 0, -0.898425, 38.1774, 0, 1, 0, 0, 0.898425, 0, -0.439127, -21.4761, -0.463187, 0, -0.886261, 39.1902, 0, 1, 0, 0, 0.886261, 0, -0.463187, -20.9643, -0.488048, 0, -0.872817, 40.1941, 0, 1, 0, 0, 0.872817, 0, -0.488048, -20.4215, -0.51391, 0, -0.857844, 41.1889, 0, 1, 0, 0, 0.857844, 0, -0.51391, -19.8457, -0.541007, 0, -0.841018, 42.174, 0, 1, 0, 0, 0.841018, 0, -0.541007, -19.2342, -0.569604, 0, -0.821919, 43.1487, 0, 1, 0, 0, 0.821919, 0, -0.569604, -18.5836, -0.600021, 0, -0.799984, 44.1119, 0, 1, 0, 0, 0.799984, 0, -0.600021, -17.8892, -0.632584, 0, -0.774491, 45.0623, 0, 1, 0, 0, 0.774491, 0, -0.632584, -17.1457, -0.667698, 0, -0.744432, 45.9978, 0, 1, 0, 0, 0.744432, 0, -0.667698, -16.3454, -0.705751, 0, -0.70846, 46.915, 0, 1, 0, 0, 0.70846, 0, -0.705751, -15.4791, -0.747105, 0, -0.664706, 47.8092, 0, 1, 0, 0, 0.664706, 0, -0.747105, -14.5342, -0.791957, 0, -0.610576, 48.6721, 0, 1, 0, 0, 0.610576, 0, -0.791957, -13.4943, -0.84001, 0, -0.542571, 49.4903, 0, 1, 0, 0, 0.542571, 0, -0.84001, -12.3386, -0.889928, 0, -0.456101, 50.2409, 0, 1, 0, 0, 0.456101, 0, -0.889928, -11.0413, -0.938258, 0, -0.345936, 50.8858, 0, 1, 0, 0, 0.345936, 0, -0.938258, -9.57608, -0.978167, 0, -0.207821, 51.3646, 0, 1, 0, 0, 0.207821, 0, -0.978167, -7.9262, -0.999092, 0, -0.0426166, 51.5965, 0, 1, 0, 0, 0.0426166, 0, -0.999092, -6.1095, -0.990303, 0, 0.138927, 51.505, 0, 1, 0, 0, -0.138927, 0, -0.990303, -4.20432, -0.94851, 0, 0.316747, 51.067, 0, 1, 0, 0, -0.316747, 0, -0.94851, -2.34328, -0.881819, 0, 0.471588, 50.3369, 0, 1, 0, 0, -0.471588, 0, -0.881819, -0.652431, -0.803929, 0, 0.594725, 49.4117, 0, 1, 0, 0, -0.594725, 0, -0.803929, 0.806583, -0.730421, 0, 0.682997, 48.4009, 0, 1, 0, 0, -0.682997, 0, -0.730421, 2.01287, -0.68759, 0, 0.726099, 47.4826, 0, 1, 0, 0, -0.726099, 0, -0.68759, 2.93822, -0.633085, 0, 0.774082, 46.4604, 0, 1, 0, 0, -0.774082, 0, -0.633085, 3.83957, -0.563848, 0, 0.825879, 45.3145, 0, 1, 0, 0, -0.825879, 0, -0.563848, 4.69837, -0.477283, 0, 0.87875, 44.0292, 0, 1, 0, 0, -0.87875, 0, -0.477283, 5.48466, -0.373016, 0, 0.927825, 42.604, 0, 1, 0, 0, -0.927825, 0, -0.373016, 6.15644, -0.255028, 0, 0.966934, 41.0657, 0, 1, 0, 0, -0.966934, 0, -0.255028, 6.66711, -0.132346, 0, 0.991204, 39.4719, 0, 1, 0, 0, -0.991204, 0, -0.132346, 6.98227, -0.0165498, 0, 0.999863, 37.8962, 0, 1, 0, 0, -0.999863, 0, -0.0165498, 7.09894, 0.08307, 0, 0.996544, 36.3991, 0, 1, 0, 0, -0.996544, 0, 0.08307, 7.04745, 0.162088, 0, 0.986776, 35.012, 0, 1, 0, 0, -0.986776, 0, 0.162088, 6.87419, 0.220294, 0, 0.975434, 33.7399, 0, 1, 0, 0, -0.975434, 0, 0.220294, 6.62452, 0.259647, 0, 0.965704, 32.5728, 0, 1, 0, 0, -0.965704, 0, 0.259647, 6.33442, 0.282609, 0, 0.959235, 31.4959, 0, 1, 0, 0, -0.959235, 0, 0.282609, 6.02974, 0.291203, 0, 0.956661, 30.4953, 0, 1, 0, 0, -0.956661, 0, 0.291203, 5.72882, 0.28722, 0, 0.957865, 29.5582, 0, 1, 0, 0, -0.957865, 0, 0.28722, 5.44462, 0.271759, 0, 0.962365, 28.6757, 0, 1, 0, 0, -0.962365, 0, 0.271759, 5.18669, 0.245598, 0, 0.969372, 27.8407, 0, 1, 0, 0, -0.969372, 0, 0.245598, 4.96225, 0.20948, 0, 0.977813, 27.0478, 0, 1, 0, 0, -0.977813, 0, 0.20948, 4.77615, 0.164135, 0, 0.986438, 26.2924, 0, 1, 0, 0, -0.986438, 0, 0.164135, 4.63174, 0.110592, 0, 0.993866, 25.5698, 0, 1, 0, 0, -0.993866, 0, 0.110592, 4.53064, 0.0501889, 0, 0.99874, 24.8753, 0, 1, 0, 0, -0.99874, 0, 0.0501889, 4.47417, -0.0151742, 0, 0.999885, 24.2024, 0, 1, 0, 0, -0.999885, 0, -0.0151742, 4.46205, -0.0833027, 0, 0.996524, 23.5445, 0, 1, 0, 0, -0.996524, 0, -0.0833027, 4.49439, -0.151882, 0, 0.988399, 22.8945, 0, 1, 0, 0, -0.988399, 0, -0.151882, 4.57141, -0.228021, 0, 0.973656, 22.2931, 0, 1, 0, 0, -0.973656, 0, -0.228021, 4.68491, -0.326216, 0, 0.945295, 21.8235, 0, 1, 0, 0, -0.945295, 0, -0.326216, 4.81937, -0.433449, 0, 0.901178, 21.4349, 0, 1, 0, 0, -0.901178, 0, -0.433449, 4.97791, -0.545607, 0, 0.838041, 21.1246, 0, 1, 0, 0, -0.838041, 0, -0.545607, 5.1518, -0.65595, 0, 0.754804, 20.8784, 0, 1, 0, 0, -0.754804, 0, -0.65595, 5.33705, -0.756583, 0, 0.653897, 20.6756, 0, 1, 0, 0, -0.653897, 0, -0.756583, 5.53959, -0.840902, 0, 0.541188, 20.4992, 0, 1, 0, 0, -0.541188, 0, -0.840902, 5.77648, -0.905626, 0, 0.424076, 20.3403, 0, 1, 0, 0, -0.424076, 0, -0.905626, 6.06587, -0.951064, 0, 0.308994, 20.201, 0, 1, 0, 0, -0.308994, 0, -0.951064, 6.4202, -0.979758, 0, 0.200187, 20.0908, 0, 1, 0, 0, -0.200187, 0, -0.979758, 6.84289, -0.995047, 0, 0.0994015, 20.018, 0, 1, 0, 0, -0.0994015, 0, -0.995047, 7.32731, -0.999977, 0, 0.00685796, 19.9903, 0, 1, 0, 0, -0.00685796, 0, -0.999977, 7.86286, -0.996934, 0, -0.0782512, 20.0111, 0, 1, 0, 0, 0.0782512, 0, -0.996934, 8.43635, -0.987595, 0, -0.15702, 20.0827, 0, 1, 0, 0, 0.15702, 0, -0.987595, 9.03521, -0.97301, 0, -0.230762, 20.2042, 0, 1, 0, 0, 0.230762, 0, -0.97301, 9.64718, -0.953719, 0, -0.300699, 20.3737, 0, 1, 0, 0, 0.300699, 0, -0.953719, 10.2612, -0.929845, 0, -0.367952, 20.5887, 0, 1, 0, 0, 0.367952, 0, -0.929845, 10.8672, -0.901145, 0, -0.433518, 20.8459, 0, 1, 0, 0, 0.433518, 0, -0.901145, 11.4553, -0.867018, 0, -0.498277, 21.1413, 0, 1, 0, 0, 0.498277, 0, -0.867018, 12.016, -0.826512, 0, -0.562919, 21.4695, 0, 1, 0, 0, 0.562919, 0, -0.826512, 12.5401, -0.778298, 0, -0.627895, 21.8237, 0, 1, 0, 0, 0.627895, 0, -0.778298, 13.0183, -0.720646, 0, -0.693303, 22.1959, 0, 1, 0, 0, 0.693303, 0, -0.720646, 13.4418, -0.651416, 0, -0.75872, 22.576, 0, 1, 0, 0, 0.75872, 0, -0.651416, 13.8016, -0.568437, 0, -0.822727, 22.9518, 0, 1, 0, 0, 0.822727, 0, -0.568437, 14.093, -0.498634, 0, -0.866813, 23.4536, 0, 1, 0, 0, 0.866813, 0, -0.498634, 14.3972, -0.49564, 0, -0.868528, 24.3065, 0, 1, 0, 0, 0.868528, 0, -0.49564, 14.8855, -0.495472, 0, -0.868624, 25.1744, 0, 1, 0, 0, 0.868624, 0, -0.495472, 15.3804, -0.497835, 0, -0.867272, 26.0542, 0, 1, 0, 0, 0.867272, 0, -0.497835, 15.8836, -0.502605, 0, -0.864516, 26.9441, 0, 1, 0, 0, 0.864516, 0, -0.502605, 16.3974, -0.509735, 0, -0.860332, 27.8423, 0, 1, 0, 0, 0.860332, 0, -0.509735, 16.9243, -0.519259, 0, -0.854617, 28.7475, 0, 1, 0, 0, 0.854617, 0, -0.519259, 17.4672, -0.531303, 0, -0.847182, 29.6588, 0, 1, 0, 0, 0.847182, 0, -0.531303, 18.0294, -0.546101, 0, -0.837719, 30.5754, 0, 1, 0, 0, 0.837719, 0, -0.546101, 18.6152, -0.563937, 0, -0.825818, 31.4966, 0, 1, 0, 0, 0.825818, 0, -0.563937, 19.2295, -0.58521, 0, -0.810882, 32.4217, 0, 1, 0, 0, 0.810882, 0, -0.58521, 19.8783, -0.610479, 0, -0.792032, 33.3498, 0, 1, 0, 0, 0.792032, 0, -0.610479, 20.5701, -0.640368, 0, -0.768068, 34.2798, 0, 1, 0, 0, 0.768068, 0, -0.640368, 21.315, -0.675646, 0, -0.737226, 35.2095, 0, 1, 0, 0, 0.737226, 0, -0.675646, 22.1267, -0.717131, 0, -0.696939, 36.1349, 0, 1, 0, 0, 0.696939, 0, -0.717131, 23.0239, -0.765424, 0, -0.643527, 37.0479, 0, 1, 0, 0, 0.643527, 0, -0.765424, 24.0317, -0.820394, 0, -0.571799, 37.9322, 0, 1, 0, 0, 0.571799, 0, -0.820394, 25.1827, -0.879887, 0, -0.475184, 38.7555, 0, 1, 0, 0, 0.475184, 0, -0.879887, 26.5157, -0.937779, 0, -0.347234, 39.459, 0, 1, 0, 0, 0.347234, 0, -0.937779, 28.0648, -0.982435, 0, -0.186604, 39.952, 0, 1, 0, 0, 0.186604, 0, -0.982435, 29.8297, -0.999993, 0, -0.00379913, 40.1357, 0, 1, 0, 0, 0.00379913, 0, -0.999993, 31.7376, -0.983973, 0, 0.178316, 39.9672, 0, 1, 0, 0, -0.178316, 0, -0.983973, 33.6428, -0.954666, 0, 0.297678, 39.5818, 0, 1, 0, 0, -0.297678, 0, -0.954666, 35.2101, -0.911384, 0, 0.411558, 39.0102, 0, 1, 0, 0, -0.411558, 0, -0.911384, 36.7136, -0.856243, 0, 0.516573, 38.2694, 0, 1, 0, 0, -0.516573, 0, -0.856243, 38.1232, -0.793296, 0, 0.608836, 37.3909, 0, 1, 0, 0, -0.608836, 0, -0.793296, 39.4098, -0.726844, 0, 0.686803, 36.4096, 0, 1, 0, 0, -0.686803, 0, -0.726844, 40.5598, -0.660435, 0, 0.750883, 35.3576, 0, 1, 0, 0, -0.750883, 0, -0.660435, 41.5737, -0.596451, 0, 0.802649, 34.26, 0, 1, 0, 0, -0.802649, 0, -0.596451, 42.4607, -0.536185, 0, 0.844101, 33.1346, 0, 1, 0, 0, -0.844101, 0, -0.536185, 43.234, -0.480221, 0, 0.877147, 31.9934, 0, 1, 0, 0, -0.877147, 0, -0.480221, 43.9069, -0.428563, 0, 0.903512, 30.8443, 0, 1, 0, 0, -0.903512, 0, -0.428563, 44.4928, -0.381, 0, 0.924575, 29.6921, 0, 1, 0, 0, -0.924575, 0, -0.381, 45.0026, -0.337181, 0, 0.94144, 28.5397, 0, 1, 0, 0, -0.94144, 0, -0.337181, 45.4457, -0.296704, 0, 0.954969, 27.3889, 0, 1, 0, 0, -0.954969, 0, -0.296704, 45.8301, -0.259203, 0, 0.965823, 26.2407, 0, 1, 0, 0, -0.965823, 0, -0.259203, 46.162, -0.22428, 0, 0.974525, 25.0958, 0, 1, 0, 0, -0.974525, 0, -0.22428, 46.4471, -0.19164, 0, 0.981465, 23.9545, 0, 1, 0, 0, -0.981465, 0, -0.19164, 46.6895, -0.160966, 0, 0.98696, 22.8168, 0, 1, 0, 0, -0.98696, 0, -0.160966, 46.8931, -0.132005, 0, 0.991249, 21.6827, 0, 1, 0, 0, -0.991249, 0, -0.132005, 47.0609, -0.10453, 0, 0.994522, 20.5524, 0, 1, 0, 0, -0.994522, 0, -0.10453, 47.1955, -0.0783523, 0, 0.996926, 19.4257, 0, 1, 0, 0, -0.996926, 0, -0.0783523, 47.2989, -0.0532937, 0, 0.998579, 18.3026, 0, 1, 0, 0, -0.998579, 0, -0.0532937, 47.3729, 0.0077951, 0, 0.99997, 16.9977, 0, 1, 0, 0, -0.99997, 0, 0.0077951, 47.4041, 0.066997, 0, 0.997753, 15.7025, 0, 1, 0, 0, -0.997753, 0, 0.066997, 47.3552, 0.120175, 0, 0.992753, 14.4412, 0, 1, 0, 0, -0.992753, 0, 0.120175, 47.2361, 0.168198, 0, 0.985753, 13.2117, 0, 1, 0, 0, -0.985753, 0, 0.168198, 47.0565, 0.211863, 0, 0.977299, 12.0117, 0, 1, 0, 0, -0.977299, 0, 0.211863, 46.8239, 0.251868, 0, 0.967762, 10.8391, 0, 1, 0, 0, -0.967762, 0, 0.251868, 46.5441, 0.288833, 0, 0.957379, 9.69164, 0, 1, 0, 0, -0.957379, 0, 0.288833, 46.2215, 0.323291, 0, 0.9463, 8.56745, 0, 1, 0, 0, -0.9463, 0, 0.323291, 45.8599, 0.355698, 0, 0.934601, 7.46492, 0, 1, 0, 0, -0.934601, 0, 0.355698, 45.4618, 0.386468, 0, 0.922303, 6.38258, 0, 1, 0, 0, -0.922303, 0, 0.386468, 45.0291, 0.415964, 0, 0.909381, 5.31922, 0, 1, 0, 0, -0.909381, 0, 0.415964, 44.5632, 0.444519, 0, 0.89577, 4.27382, 0, 1, 0, 0, -0.89577, 0, 0.444519, 44.0648, 0.472445, 0, 0.88136, 3.24557, 0, 1, 0, 0, -0.88136, 0, 0.472445, 43.5342, 0.500046, 0, 0.865999, 2.23379, 0, 1, 0, 0, -0.865999, 0, 0.500046, 42.9712, 0.527624, 0, 0.849478, 1.23806, 0, 1, 0, 0, -0.849478, 0, 0.527624, 42.3748, 0.555496, 0, 0.831519, 0.258057, 0, 1, 0, 0, -0.831519, 0, 0.555496, 41.7435, 0.584003, 0, 0.811752, -0.706276, 0, 1, 0, 0, -0.811752, 0, 0.584003, 41.0749, 0.613523, 0, 0.789677, -1.65483, 0, 1, 0, 0, -0.789677, 0, 0.613523, 40.3659, 0.644501, 0, 0.764603, -2.58712, 0, 1, 0, 0, -0.764603, 0, 0.644501, 39.6116, 0.677437, 0, 0.735581, -3.50229, 0, 1, 0, 0, -0.735581, 0, 0.677437, 38.8058, 0.712975, 0, 0.701189, -4.39872, 0, 1, 0, 0, -0.701189, 0, 0.712975, 37.9387, 0.751765, 0, 0.659431, -5.27374, 0, 1, 0, 0, -0.659431, 0, 0.751765, 36.9979, 0.794574, 0, 0.607167, -6.12222, 0, 1, 0, 0, -0.607167, 0, 0.794574, 35.9639, 0.842003, 0, 0.539473, -6.93429, 0, 1, 0, 0, -0.539473, 0, 0.842003, 34.8075, 0.893757, 0, 0.448552, -7.6895, 0, 1, 0, 0, -0.448552, 0, 0.893757, 33.4854, 0.946677, 0, 0.322183, -8.34283, 0, 1, 0, 0, -0.322183, 0, 0.946677, 31.933, 0.982413, 0, 0.186722, -8.76534, 0, 1, 0, 0, -0.186722, 0, 0.982413, 30.287, 0.987505, 0, 0.15759, -8.96287, 0, 1, 0, 0, -0.15759, 0, 0.987505, 29.1563, 0.991537, 0, 0.129825, -9.12657, 0, 1, 0, 0, -0.129825, 0, 0.991537, 28.0278, 0.994584, 0, 0.103934, -9.25853, 0, 1, 0, 0, -0.103934, 0, 0.994584, 26.9053, 0.996768, 0, 0.0803376, -9.36139, 0, 1, 0, 0, -0.0803376, 0, 0.996768, 25.7915, 0.998238, 0, 0.0593319, -9.43833, 0, 1, 0, 0, -0.0593319, 0, 0.998238, 24.6889, 0.999156, 0, 0.041074, -9.49288, 0, 1, 0, 0, -0.041074, 0, 0.999156, 23.5989, 0.999672, 0, 0.0256094, -9.52857, 0, 1, 0, 0, -0.0256094, 0, 0.999672, 22.5222, 0.999917, 0, 0.0128816, -9.54882, 0, 1, 0, 0, -0.0128816, 0, 0.999917, 21.4587, 0.999996, 0, 0.00275434, -9.55682, 0, 1, 0, 0, -0.00275434, 0, 0.999996, 20.4081, 0.999988, 0, -0.00496499, -9.5555, 0, 1, 0, 0, 0.00496499, 0, 0.999988, 19.3695, 0.999945, 0, -0.0104831, -9.54737, 0, 1, 0, 0, 0.0104831, 0, 0.999945, 18.342, 0.999901, 0, -0.014052, -9.53474, 0, 1, 0, 0, 0.014052, 0, 0.999901, 17.3242, 0.999874, 0, -0.0158932, -9.5195, 0, 1, 0, 0, 0.0158932, 0, 0.999874, 16.3151, 0.999868, 0, -0.0162388, -9.50329, 0, 1, 0, 0, 0.0162388, 0, 0.999868, 15.3135, 0.999883, 0, -0.0153023, -9.48749, 0, 1, 0, 0, 0.0153023, 0, 0.999883, 14.3183, 0.999912, 0, -0.0132726, -9.47327, 0, 1, 0, 0, 0.0132726, 0, 0.999912, 13.3286, 0.999947, 0, -0.0103287, -9.46157, 0, 1, 0, 0, 0.0103287, 0, 0.999947, 12.3433, 0.999978, 0, -0.00662664, -9.45319, 0, 1, 0, 0, 0.00662664, 0, 0.999978, 11.3619) + +[node name="Track" type="Path3D"] +curve = SubResource("Curve3D_3wmeb") +script = ExtResource("1_8qwqq") +tire_spacing = 1.0 + +[node name="Road" type="CSGPolygon3D" parent="."] +polygon = PackedVector2Array(-4.5, -0.1, -4.5, 0, -2.25, 0, 0, 0, 2.25, 0, 4.5, 0, 4.5, -0.1) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 0.5 +path_simplify_angle = 5.0 +path_rotation = 2 +path_local = false +path_continuous_u = true +path_u_distance = 1.0 +path_joined = true +material = SubResource("StandardMaterial3D_w255p") + +[node name="LeftBarrier" type="CSGPolygon3D" parent="."] +polygon = PackedVector2Array(4.5, 0.1, 4.5, 0.3, 4.52, 0.3, 4.52, 0.1) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 0.5 +path_simplify_angle = 0.0 +path_rotation = 2 +path_local = false +path_continuous_u = true +path_u_distance = 1.0 +path_joined = true + +[node name="LeftCollision" type="CSGPolygon3D" parent="."] +visible = false +use_collision = true +polygon = PackedVector2Array(4.5, 0, 4.5, 1, 5, 1, 5, 0) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 0.5 +path_simplify_angle = 0.0 +path_rotation = 2 +path_local = false +path_continuous_u = true +path_u_distance = 1.0 +path_joined = true + +[node name="RightBarrier" type="CSGPolygon3D" parent="."] +polygon = PackedVector2Array(-4.52, 0.1, -4.52, 0.3, -4.5, 0.3, -4.5, 0.1) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 0.5 +path_simplify_angle = 0.0 +path_rotation = 2 +path_local = false +path_continuous_u = true +path_u_distance = 1.0 +path_joined = true + +[node name="RightCollision" type="CSGPolygon3D" parent="."] +visible = false +use_collision = true +polygon = PackedVector2Array(-5, 0, -5, 1, -4.5, 1, -4.5, 0) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 0.5 +path_simplify_angle = 0.0 +path_rotation = 2 +path_local = false +path_continuous_u = true +path_u_distance = 1.0 +path_joined = true + +[node name="Tirewall" type="MultiMeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.17, 0) +multimesh = SubResource("MultiMesh_tv7s7") diff --git a/xr/openxr_vehicle_movement/vehicle.gd b/xr/openxr_vehicle_movement/vehicle.gd new file mode 100644 index 0000000000..f08ae193ed --- /dev/null +++ b/xr/openxr_vehicle_movement/vehicle.gd @@ -0,0 +1,135 @@ +extends VehicleBody3D + +const MAX_STEERING_ANGLE : float = deg_to_rad(20) +const FORWARD_ACCELERATION : float = 75.0 +const BACKWARD_ACCELERATION : float = 40.0 +const BRAKE_FORCE : float = 2.0 +const MIN_VELOCITY : float = 1.0 +const MAX_CAMERA_DISTANCE : float = 0.3 +const CAMERA_FADE : float = 0.1 + +var use_xr_input = false +var xr_steer_with_left = false +var xr_steer_with_right = false +var reverse = false + +# Called when the node enters the scene tree for the first time. +func _ready(): + var material : ShaderMaterial = %SteeringWheelDisplay.material_override + if material: + material.set_shader_parameter("albedo_texture", %InfoViewport.get_texture()) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + # Check steering + var steering_input : float = 0.0 + if use_xr_input: + var direction : Vector2 = Vector2() + var to_local : Transform3D = $SteeringWheelAnchor.global_transform.inverse() + + if %RightHand.get_has_tracking_data() and xr_steer_with_right: + var hand_pos : Vector3 = to_local * %RightHand.global_transform.origin + direction = Vector2(hand_pos.x, hand_pos.y) + + if %LeftHand.get_has_tracking_data() and xr_steer_with_left: + var hand_pos : Vector3 = to_local * %LeftHand.global_transform.origin + direction -= Vector2(hand_pos.x, hand_pos.y) + + direction = direction.normalized() + + # Calculate our new steering input + steering_input = -direction.angle_to(Vector2(0.0, -1.0)) + if steering_input > PI: + steering_input -= 2.0 * PI + elif steering_input < -PI: + steering_input += 2.0 * PI + steering_input /= PI + + # Add protection against complete 180 flip + var was_steering_input : float = steering / -MAX_STEERING_ANGLE + if was_steering_input < -0.75 and steering_input > 0.75: + steering_input = -1.0 + elif was_steering_input > 0.75 and steering_input < -0.75: + steering_input = 1.0 + else: + steering_input = Input.get_axis("turn_left", "turn_right") + steering = steering_input * -MAX_STEERING_ANGLE + + %SteeringWheelPivot.rotation.z = steering * (deg_to_rad(180) / -MAX_STEERING_ANGLE) + + # Check + var accel_input : float = 0.0 + var brake_input : float = 0.0 + var just_pressed_accel : bool = false + var just_pressed_brake : bool = false + if use_xr_input: + # Remember our current values + var was_accel_input = accel_input + var was_brake_input = brake_input + + # Get our new values. + # In XR we have bound these to either left or right hand. + # We don't have an API yet to gather the action value regardless of what its bound to. + accel_input = %LeftHand.get_float("accelerate") + %RightHand.get_float("accelerate") + brake_input = %LeftHand.get_float("brake") + %RightHand.get_float("brake") + + just_pressed_accel = accel_input > 0.0 and was_accel_input == 0.0 + just_pressed_brake = brake_input > 0.0 and was_brake_input == 0.0 + else: + accel_input = Input.get_action_strength("accelerate") + brake_input = Input.get_action_strength("brake") + just_pressed_accel = Input.is_action_just_pressed("accelerate") + just_pressed_brake = Input.is_action_just_pressed("brake") + + var auto_brake_force : float = 0.0 + if linear_velocity.length() < MIN_VELOCITY: + auto_brake_force = 0.1 + if just_pressed_brake: + reverse = true + elif just_pressed_accel: + reverse = false + + if !reverse: + engine_force = accel_input * FORWARD_ACCELERATION + brake = auto_brake_force + brake_input * BRAKE_FORCE + else: + engine_force = brake_input * -BACKWARD_ACCELERATION + brake = auto_brake_force + accel_input * BRAKE_FORCE + + # Blackout screen if our head moves too far away + var camera_distance_from_origin = %XRCamera3D.position.length() + %BlackOut.fade = clamp((camera_distance_from_origin - MAX_CAMERA_DISTANCE) / CAMERA_FADE, 0.0, 1.0) + + # Update some info: + var velocity = linear_velocity.length() + %InfoUI.set_velocity(velocity) + + +func _on_hand_detector_body_entered(body): + var hand : XRHand3D = body.get_parent() + if hand: + hand.set_hand_mesh_toplevel(true) + + if hand.tracker == "left_hand": + %LeftHandAnchor.remote_path = hand.get_hand_mesh_path() + xr_steer_with_left = true + elif hand.tracker == "right_hand": + %RightHandAnchor.remote_path = hand.get_hand_mesh_path() + xr_steer_with_right = true + + use_xr_input = xr_steer_with_left or xr_steer_with_right + + +func _on_hand_detector_body_exited(body): + var hand : XRHand3D = body.get_parent() + if hand: + if hand.tracker == "left_hand": + %LeftHandAnchor.remote_path = NodePath() + xr_steer_with_left = false + elif hand.tracker == "right_hand": + %RightHandAnchor.remote_path = NodePath() + xr_steer_with_right = false + + hand.set_hand_mesh_toplevel(false) + + use_xr_input = xr_steer_with_left or xr_steer_with_right diff --git a/xr/openxr_vehicle_movement/vehicle.tscn b/xr/openxr_vehicle_movement/vehicle.tscn new file mode 100644 index 0000000000..d3767dd345 --- /dev/null +++ b/xr/openxr_vehicle_movement/vehicle.tscn @@ -0,0 +1,360 @@ +[gd_scene load_steps=24 format=3 uid="uid://dkdk37kpjui3q"] + +[ext_resource type="Script" path="res://vehicle.gd" id="1_7ma2j"] +[ext_resource type="PackedScene" uid="uid://l0xjd05idone" path="res://assets/gokart/scene.gltf" id="2_kfcgm"] +[ext_resource type="ArrayMesh" uid="uid://6tmtkswqlu1o" path="res://assets/gokart/SeparatedMeshes/SteeringWheelRing.mesh" id="3_lrptk"] +[ext_resource type="Material" uid="uid://2xqcil35ckmf" path="res://assets/gokart/materials/Material.015.nocull.tres" id="3_o3bfy"] +[ext_resource type="ArrayMesh" uid="uid://don64v7xmdgg" path="res://assets/gokart/SeparatedMeshes/SteeringWheelCenter.mesh" id="4_mhhi7"] +[ext_resource type="ArrayMesh" uid="uid://b5h5cyytrbbtt" path="res://assets/gokart/SeparatedMeshes/SteeringWheelDisplay.mesh" id="5_vfed0"] +[ext_resource type="ArrayMesh" uid="uid://jpn14bb16qis" path="res://assets/gokart/SeparatedMeshes/SteeringWheelDisplayHolder.mesh" id="6_h64mi"] +[ext_resource type="ArrayMesh" uid="uid://dadqutpbe104x" path="res://assets/gokart/SeparatedMeshes/SteeringWheelBracket.mesh" id="7_5cxcj"] +[ext_resource type="ArrayMesh" uid="uid://8xlmvfu6g4jf" path="res://assets/gokart/SeparatedMeshes/FrontWheelAxle.mesh" id="10_ww2pm"] +[ext_resource type="ArrayMesh" uid="uid://c14r4hymxpooh" path="res://assets/gokart/SeparatedMeshes/FrontWheel.mesh" id="11_ag0wg"] +[ext_resource type="ArrayMesh" uid="uid://dfy8qw7iroj4l" path="res://assets/gokart/SeparatedMeshes/FrontWheelHub.mesh" id="12_abuu3"] +[ext_resource type="PackedScene" uid="uid://bbvciliw3xnf6" path="res://objects/black_out.tscn" id="16_bmfua"] +[ext_resource type="ArrayMesh" uid="uid://hnyoxv2odu1y" path="res://assets/gokart/SeparatedMeshes/RearWheel.mesh" id="16_oucwn"] +[ext_resource type="ArrayMesh" uid="uid://dum2fans1uiw1" path="res://assets/gokart/SeparatedMeshes/RearWheelHub.mesh" id="17_it00k"] +[ext_resource type="PackedScene" uid="uid://cj3hkqph5hlf4" path="res://objects/hand.tscn" id="17_qry2o"] +[ext_resource type="Shader" path="res://shaders/transparent_textured.gdshader" id="18_xm0si"] +[ext_resource type="PackedScene" uid="uid://dal5i1c6mh07h" path="res://InfoUI.tscn" id="19_m6ejn"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_fiiud"] +size = Vector3(1.64766, 0.1, 1.93739) + +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_7n65n"] +points = PackedVector3Array(0.851964, 0.1675, 1.0133, -0.780105, -0.237986, 0.0365355, -0.153729, 1.34105, 0.342991, 0.055483, -1.25704, 0.00777698, 0.055483, 1.25704, 0.00777698, 0.527111, -0.366754, 1.02921, -0.237577, -1.29905, 0.342991, -0.656657, 0.754277, 0.259159, 0.527112, 0.366754, 1.02921, -0.740505, -0.125494, 0.342991, -0.614781, 0.707166, 0.00260986, 0.809957, -0.335263, 0.971389, -0.237577, -0.921778, -0.0340243, -0.488959, -1.08954, 0.259159, 0.758876, 0.313753, 1.10142, -0.0698798, -1.34105, 0.342991, -0.405275, 1.17329, 0.301075, -0.782348, 0.209507, 0.301075, -0.424014, -1.03493, 0.0350808, 0.0138048, 1.34105, 0.00777698, 0.710182, -0.348052, 1.09401, 0.212607, 0.265312, 0.883992, -0.237577, 0.963784, -0.0340243, -0.774435, 0.11802, 0.000908487, -0.656657, -0.754277, 0.259159, 0.0138048, -1.34105, 0.00777698, -0.0280375, 1.34105, 0.301075, 0.809957, 0.335263, 0.971389, -0.654479, -0.629089, 0.00222349, 0.212559, -0.265248, 0.883912, -0.46249, 0.992135, 0.0364561, -0.405275, -1.17329, 0.301075) + +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_d6sje"] +points = PackedVector3Array(-0.210139, -2.06126, 0.0146781, -0.437945, 1.91823, 1.09208, -0.665752, 3.39888, 0.0669962, -0.665752, -3.77675, 0.864185, 0.245474, -1.9543, 0.0669962, 0.245474, -1.9543, 0.978132, 0.245474, 1.6906, 0.0669962, -0.665752, -3.66258, 0.0669962, 0.0176675, 3.05708, 0.864185, -0.665752, 3.51305, 0.864185, 0.0176675, -3.32078, 0.180944, 0.245474, 1.6906, 0.978132, -0.437945, -2.18193, 1.09208, -0.0962357, 3.17125, 0.0669962, 0.0176675, -3.32078, 0.864185, -0.00511316, 1.71322, 0.01, -0.324042, -3.66258, 0.0669962, -0.324042, 3.39888, 0.0669962, 0.0176675, 3.05708, 0.180944, 0.0914322, -1.84036, 0.0199459, 0.0176675, -3.20661, 0.0669962, -0.210139, 1.79857, 0.0144116, -0.665752, -3.77675, 0.180944, -0.665752, 3.51305, 0.180944, -0.00511316, -1.97692, 0.01, 0.0176675, 2.94291, 0.0669962, 0.0914323, 1.57666, 0.0199456, -0.0962357, -3.43495, 0.0669962) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_bst5e"] +render_priority = 0 +shader = ExtResource("18_xm0si") +shader_parameter/use_vertex_uv = null +shader_parameter/swap_uv = true +shader_parameter/scale_uv = Vector2(1.115, 1.905) +shader_parameter/offset_uv = Vector2(-0.06, -0.235) + +[sub_resource type="BoxShape3D" id="BoxShape3D_ceit6"] +size = Vector3(4, 4, 4) + +[sub_resource type="SphereMesh" id="SphereMesh_pu3u7"] +radius = 0.1 +height = 0.2 + +[node name="VehicleBody3D" type="VehicleBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, 0) +script = ExtResource("1_7ma2j") + +[node name="CollisionShapeBody" type="CollisionShape3D" parent="."] +shape = SubResource("BoxShape3D_fiiud") + +[node name="CollisionShapeFrontBumper" type="CollisionShape3D" parent="."] +transform = Transform3D(-2.3891e-08, -0.546563, -1.12937e-07, 0, -1.12937e-07, 0.546563, -0.546563, 2.3891e-08, 4.93665e-15, 0.000471619, -0.163553, 0.988823) +shape = SubResource("ConvexPolygonShape3D_7n65n") + +[node name="CollisionShapeRearBumper" type="CollisionShape3D" parent="."] +transform = Transform3D(-1.06308e-08, -0.243205, -5.0254e-08, 0, -5.0254e-08, 0.243205, -0.243205, 1.06308e-08, 2.19667e-15, -0.0269299, -0.163553, -1.18411) +shape = SubResource("ConvexPolygonShape3D_d6sje") + +[node name="GoKart" parent="." instance=ExtResource("2_kfcgm")] + +[node name="Sketchfab_model" parent="GoKart" index="0"] +transform = Transform3D(-2.3891e-08, -0.546563, -2.3891e-08, 0, -2.3891e-08, 0.546563, -0.546563, 2.3891e-08, 1.04431e-15, 0.008, 0.401, 0) + +[node name="Cube_002_Material_0" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cube_002" index="0"] +transform = Transform3D(1, 0, 8.47033e-22, 0, 1, 3.94809e-22, 1.69407e-21, 2.84217e-14, 1, 0, 0.0877885, 2.98023e-08) + +[node name="Cube_003" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="2"] +transform = Transform3D(100, 8.74228e-06, 3.82137e-13, 0, -4.37114e-06, 100, -8.74228e-06, 100, 4.37114e-06, -2.7362, -61.5129, 60.0056) + +[node name="Cube_003_Material_0" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cube_003" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 7.75957e-23, 0, 7.75957e-23, 1, 3.72529e-09, 0.0411277, 0) + +[node name="Cylinder_002" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="5"] +visible = false + +[node name="Cylinder_002_Material_017_0" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_002" index="0"] +transform = Transform3D(1, 0, 3.55271e-15, 0, 1, -3.28406e-15, 3.55271e-15, -3.28406e-15, 1, 0, 0, 0) + +[node name="Cylinder_003" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="6"] +visible = false + +[node name="Cylinder_001" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="7"] +visible = false + +[node name="Cylinder_005" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="8"] +visible = false + +[node name="Cylinder_011" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="12"] +transform = Transform3D(-1.69175, 1.51318e-07, -0.520452, -0.520452, 2.27497e-08, 1.69175, 1.51318e-07, 1.77, 2.27497e-08, -172.225, -84.1333, -25.2716) + +[node name="Cube_014" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="14"] +transform = Transform3D(100, 0, -3.25261e-19, -8.13152e-20, -1.62921e-05, 100, 0, -100, -1.62921e-05, -183.002, -81.4564, -33.6323) + +[node name="Cylinder_016" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="18"] +visible = false + +[node name="Cube_019" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="20"] +visible = false + +[node name="Cube_020" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="21"] +visible = false + +[node name="Cylinder_017" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="25"] +visible = false + +[node name="Cylinder_020" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="28"] +transform = Transform3D(-2.75807, 0.63771, 4.35477, 7.75996e-07, -5.13919, 0.752581, 4.40121, 0.399629, 2.72896, -177.225, -81.5338, 58.4788) + +[node name="Cube_025" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="29"] +transform = Transform3D(-6.1, 5.33279e-07, -2.33104e-14, -1.69407e-21, -2.6664e-07, -6.1, -5.33279e-07, -6.1, 2.66639e-07, -132.503, -74.2827, 83.9287) + +[node name="Cube_026" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="30"] +transform = Transform3D(3.81578, -1.36625, -5.97206e-08, 0, -1.77162e-07, 4.053, -1.36625, -3.81578, -1.66793e-07, -127.44, -74.2827, 82.1501) + +[node name="Cube_026_Material_016_0" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cube_026" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 8.88178e-16, 0, 8.88178e-16, 1, 0, 0, 0) + +[node name="Cylinder_021" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="31"] +visible = false + +[node name="Cylinder_022" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="32"] +transform = Transform3D(-3.017, 2.63755e-07, 0, 2.52762e-07, 2.89126, -0.861922, -7.53516e-08, -0.861922, -2.89126, -111.078, -86.9866, 48.7189) + +[node name="Plane" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="35"] +visible = false + +[node name="Cube_027" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="39"] +visible = false + +[node name="Cube_030" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="40"] +visible = false + +[node name="Cube_028" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="41"] +visible = false + +[node name="Cube_029" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="42"] +visible = false + +[node name="Cube_031" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="43"] +visible = false + +[node name="Cube_010" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="47"] +transform = Transform3D(-20.8027, -0.196706, 3.90512, 3.90381, 0.151158, 20.8033, 0.221214, -21.1655, 0.112279, 53.9649, -67.1415, 81.4674) + +[node name="Cube_010_Material_004_0" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cube_010" index="0"] +transform = Transform3D(1, -9.31323e-10, -1.49012e-08, 9.31323e-10, 1, -5.82077e-10, 1.49012e-08, 4.65661e-10, 1, 0, 0, 0) + +[node name="Cube_015" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="51"] +transform = Transform3D(49.245, -2.27374e-13, 0, 6.77626e-21, -2.15257e-06, 49.245, -2.27374e-13, -49.245, -2.15257e-06, 94.8705, -141.41, -88.6269) + +[node name="Cube_015_Material_015_0" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cube_015" index="0"] +transform = Transform3D(1, 3.55271e-15, -4.23516e-22, -3.55271e-15, 1, 1.67037e-22, 0, 7.10543e-15, 1, 0, 0, 0) +material_override = ExtResource("3_o3bfy") + +[node name="Cube_021" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="52"] +visible = false + +[node name="Cylinder_015" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode" index="56"] +visible = false + +[node name="Cylinder_015_Material_008_0" parent="GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_015" index="0"] +transform = Transform3D(1, -5.68434e-14, -2.98023e-08, 0, 1, 1.7053e-13, 0, 1.13687e-13, 1, 0, 0, 0) + +[node name="SteeringWheelAnchor" type="Node3D" parent="."] +transform = Transform3D(-3.26138e-08, 0.225543, -2.91715e-07, -0.171469, -2.14302e-07, -0.146521, -0.146521, 2.00588e-07, 0.171469, 0.0164261, 0.450171, 0.293507) + +[node name="SteeringWheelPivot" type="Node3D" parent="SteeringWheelAnchor"] +unique_name_in_owner = true +transform = Transform3D(1, -2.84217e-13, 0, 5.68434e-14, 1, 5.68434e-14, 0, -3.41061e-13, 1, 0, 0, 0) + +[node name="SteeringWheelRing" type="MeshInstance3D" parent="SteeringWheelAnchor/SteeringWheelPivot"] +transform = Transform3D(1.021, 3.53301e-08, 2.98023e-07, 3.53305e-08, -1.021, -1.67607e-06, 1.78814e-07, 1.54981e-06, -1.10418, -0.0524793, 0.000651516, 0.0899056) +mesh = ExtResource("3_lrptk") +skeleton = NodePath("../../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_016/Cylinder_016_Material_007_0") + +[node name="SteeringWheelCenter" type="MeshInstance3D" parent="SteeringWheelAnchor/SteeringWheelPivot"] +transform = Transform3D(1, -5.68434e-14, 0, 5.68434e-14, 1, 5.68434e-14, 0, -1.13687e-13, 1, 0, 0, 0) +mesh = ExtResource("4_mhhi7") +skeleton = NodePath("../../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_015/Cylinder_015_Material_008_0") + +[node name="SteeringWheelDisplay" type="MeshInstance3D" parent="SteeringWheelAnchor/SteeringWheelPivot"] +unique_name_in_owner = true +transform = Transform3D(0.257848, 8.92237e-09, 5.96046e-08, 8.92248e-09, -0.257848, -3.91396e-07, 2.98023e-08, 3.91396e-07, -0.257848, -0.167944, -0.00943883, 0.184493) +material_override = SubResource("ShaderMaterial_bst5e") +mesh = ExtResource("5_vfed0") +skeleton = NodePath("../../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cube_020/Cube_020_Material_010_0") + +[node name="SteeringWheelDisplayHolder" type="MeshInstance3D" parent="SteeringWheelAnchor/SteeringWheelPivot"] +transform = Transform3D(0.257848, 8.92237e-09, 4.47035e-08, 8.92248e-09, -0.257848, -3.91396e-07, 2.98023e-08, 3.91396e-07, -0.257848, -0.167944, -0.00943883, 0.184493) +mesh = ExtResource("6_h64mi") +skeleton = NodePath("../../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cube_019/Cube_019_Material_009_0") + +[node name="SteeringWheelBracket" type="MeshInstance3D" parent="SteeringWheelAnchor/SteeringWheelPivot"] +transform = Transform3D(0.133479, 4.6188e-09, 0, 4.61882e-09, -0.133479, -2.02612e-07, -7.45058e-09, 2.02612e-07, -0.133479, -0.106638, -0.135079, 0.249272) +mesh = ExtResource("7_5cxcj") +skeleton = NodePath("../../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cube_021/Cube_021_Material_021_0") + +[node name="LeftHandAnchor" type="RemoteTransform3D" parent="SteeringWheelAnchor/SteeringWheelPivot"] +unique_name_in_owner = true +transform = Transform3D(-4.37116e-08, -1.19209e-07, 1, -1, 0, -4.37117e-08, 1.13687e-13, -1, -1.19209e-07, 0, 1, 5.96046e-08) +update_scale = false + +[node name="RightHandAnchor" type="RemoteTransform3D" parent="SteeringWheelAnchor/SteeringWheelPivot"] +unique_name_in_owner = true +transform = Transform3D(-4.37115e-08, -1.19209e-07, 1, -1, 0, -4.37116e-08, 1.7053e-13, -1, -1.19209e-07, 0, -1, -1.19209e-07) +update_scale = false + +[node name="HandDetector" type="Area3D" parent="SteeringWheelAnchor"] +unique_name_in_owner = true +transform = Transform3D(0.707107, -2.84217e-13, -0.707107, 1.56319e-13, 1, -1.7053e-13, 0.707107, -1.7053e-13, 0.707107, 0, 0, 0) +collision_layer = 2 +collision_mask = 2 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="SteeringWheelAnchor/HandDetector"] +transform = Transform3D(0.996882, -4.83169e-13, 0.0789115, -1.51545e-13, 1, 0, -0.0789115, -2.27374e-13, 0.996882, 0, 0, 0) +shape = SubResource("BoxShape3D_ceit6") + +[node name="LeftForwardWheel" type="VehicleWheel3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.475, 0, 0.73) +use_as_steering = true +wheel_radius = 0.2 +wheel_rest_length = 0.0 +suspension_travel = 0.01 +suspension_stiffness = 500.0 +suspension_max_force = 10000.0 +damping_compression = 0.95 +damping_relaxation = 0.95 + +[node name="LeftFrontWheelAxle" type="MeshInstance3D" parent="LeftForwardWheel"] +transform = Transform3D(-1.22392e-09, 0, -0.028, 0, 0.028, 0, 0.028, 0, -1.22392e-09, 0.03, 0, 0) +mesh = ExtResource("10_ww2pm") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_021/Cylinder_021_Material_015_0") + +[node name="LeftFrontWheel" type="MeshInstance3D" parent="LeftForwardWheel"] +transform = Transform3D(-8.85404e-09, 8.88178e-16, 0.202557, 0, 0.202557, 8.88178e-16, -0.202557, -7.94093e-23, -8.85404e-09, 0.166, 0, 0) +mesh = ExtResource("11_ag0wg") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_001/Cylinder_001_Material_017_0") + +[node name="LeftFrontWheelHub" type="MeshInstance3D" parent="LeftForwardWheel"] +transform = Transform3D(-8.85404e-09, 8.88178e-16, 0.202557, 0, 0.202557, 8.88178e-16, -0.202557, -7.94093e-23, -8.85404e-09, 0.166, 0, 0) +mesh = ExtResource("12_abuu3") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_001/Cylinder_001_Material_018_0") + +[node name="LeftFrontWheelHub2" type="MeshInstance3D" parent="LeftForwardWheel"] +transform = Transform3D(-8.85404e-09, 0, -0.202557, 0, 0.202557, 0, 0.202557, 0, -8.85404e-09, 0.36613, 0, 0) +mesh = ExtResource("12_abuu3") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_001/Cylinder_001_Material_018_0") + +[node name="RightForwardWheel" type="VehicleWheel3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.475, 0, 0.73) +use_as_steering = true +wheel_radius = 0.2 +wheel_rest_length = 0.0 +suspension_travel = 0.01 +suspension_stiffness = 500.0 +suspension_max_force = 10000.0 +damping_compression = 0.95 +damping_relaxation = 0.95 + +[node name="RightFrontWheelAxle" type="MeshInstance3D" parent="RightForwardWheel"] +transform = Transform3D(-1.24097e-09, -1.11022e-16, 0.0283901, 0, 0.0283901, 3.33067e-16, -0.0283901, 3.30872e-24, -1.24097e-09, -0.027, 0, 0) +mesh = ExtResource("10_ww2pm") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_017/Cylinder_017_Material_015_0") + +[node name="RightFrontWheel" type="MeshInstance3D" parent="RightForwardWheel"] +transform = Transform3D(8.87341e-09, 1.77468e-08, 0.203, -3.06521e-08, -0.203, 1.77468e-08, 0.203, -3.06521e-08, -8.87341e-09, -0.355322, -1.49012e-08, 0) +mesh = ExtResource("11_ag0wg") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_002/Cylinder_002_Material_017_0") + +[node name="RightFrontWheelHub" type="MeshInstance3D" parent="RightForwardWheel"] +transform = Transform3D(-8.87341e-09, 0, -0.203, 0, 0.203, 0, 0.203, 0, -8.87341e-09, -0.159, 0, 0) +mesh = ExtResource("12_abuu3") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_002/Cylinder_002_Material_018_0") + +[node name="RightFrontWheelHub2" type="MeshInstance3D" parent="RightForwardWheel"] +transform = Transform3D(-8.87341e-09, 0, 0.203, 0, 0.203, 0, -0.203, 0, -8.87341e-09, -0.357962, 0, 0) +mesh = ExtResource("12_abuu3") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_002/Cylinder_002_Material_018_0") + +[node name="LeftBackWheel" type="VehicleWheel3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.835339, 0.01, -0.759) +use_as_traction = true +wheel_radius = 0.21 +wheel_rest_length = 0.0 +wheel_friction_slip = 8.0 +suspension_travel = 0.01 +suspension_stiffness = 500.0 +suspension_max_force = 10000.0 +damping_compression = 0.95 +damping_relaxation = 0.95 + +[node name="LeftRearWheel" type="MeshInstance3D" parent="LeftBackWheel"] +transform = Transform3D(-9.26725e-09, 8.88178e-16, 0.21201, 0, 0.21201, 1.77636e-15, -0.21201, -5.29396e-23, -9.26725e-09, -0.067, 0, 0) +mesh = ExtResource("16_oucwn") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_005/Cylinder_005_Material_017_0") + +[node name="LeftRearWheelHub" type="MeshInstance3D" parent="LeftBackWheel"] +transform = Transform3D(-9.26725e-09, 8.88178e-16, 0.21201, 0, 0.21201, 1.77636e-15, -0.21201, -5.29396e-23, -9.26725e-09, -0.067, 0, 0) +mesh = ExtResource("17_it00k") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_005/Cylinder_005_Material_018_0") + +[node name="RightBackWheel" type="VehicleWheel3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.835, 0.01, -0.759) +use_as_traction = true +wheel_radius = 0.21 +wheel_rest_length = 0.0 +wheel_friction_slip = 8.0 +suspension_travel = 0.01 +suspension_stiffness = 500.0 +suspension_max_force = 10000.0 +damping_compression = 0.95 +damping_relaxation = 0.95 + +[node name="RightRearWheel" type="MeshInstance3D" parent="RightBackWheel"] +transform = Transform3D(-9.26681e-09, 0, -0.212, 0, 0.212, 0, 0.212, 0, -9.26681e-09, 0.0739019, -0.00122055, 0.000597239) +mesh = ExtResource("16_oucwn") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_003/Cylinder_003_Material_017_0") + +[node name="RightRearWheelHub" type="MeshInstance3D" parent="RightBackWheel"] +transform = Transform3D(-9.26725e-09, 0, -0.21201, 0, 0.21201, 0, 0.21201, 0, -9.26725e-09, 0.0785389, 0, 5.96046e-08) +mesh = ExtResource("17_it00k") +skeleton = NodePath("../../GoKart/Sketchfab_model/Gokart _fbx/RootNode/Cylinder_005/Cylinder_005_Material_018_0") + +[node name="XROrigin3D" type="XROrigin3D" parent="."] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0.784301, -0.477039) + +[node name="XRCamera3D" type="XRCamera3D" parent="XROrigin3D"] +unique_name_in_owner = true + +[node name="BlackOut" parent="XROrigin3D/XRCamera3D" instance=ExtResource("16_bmfua")] +unique_name_in_owner = true + +[node name="LeftHand" parent="XROrigin3D" instance=ExtResource("17_qry2o")] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.5, -0.5) + +[node name="RightHand" parent="XROrigin3D" instance=ExtResource("17_qry2o")] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, -0.5, -0.5) +tracker = &"right_hand" +pose = &"default" + +[node name="TestHead" type="MeshInstance3D" parent="XROrigin3D"] +mesh = SubResource("SphereMesh_pu3u7") +skeleton = NodePath("../..") + +[node name="InfoViewport" type="SubViewport" parent="."] +unique_name_in_owner = true +disable_3d = true +size = Vector2i(512, 256) +render_target_update_mode = 4 + +[node name="InfoUI" parent="InfoViewport" instance=ExtResource("19_m6ejn")] +unique_name_in_owner = true + +[connection signal="body_entered" from="SteeringWheelAnchor/HandDetector" to="." method="_on_hand_detector_body_entered"] +[connection signal="body_exited" from="SteeringWheelAnchor/HandDetector" to="." method="_on_hand_detector_body_exited"] + +[editable path="GoKart"]