Subindo repositorio

This commit is contained in:
2026-05-02 19:54:53 -03:00
parent 9db1e98761
commit d01e2e8578
493 changed files with 63532 additions and 0 deletions
Binary file not shown.
File diff suppressed because it is too large Load Diff
+31
View File
@@ -0,0 +1,31 @@
extends Node3D
@onready var _animation_tree: AnimationTree = $AnimationTree
@onready var _main_state_machine: AnimationNodeStateMachinePlayback = _animation_tree.get("parameters/StateMachine/playback")
@onready var _secondary_action_timer: Timer = $SecondaryActionTimer
func _on_secondary_action_timer_timeout() -> void:
if _main_state_machine.get_current_node() != "Idle":
return
_main_state_machine.travel("HeadMovement")
_secondary_action_timer.start(randf_range(3.0, 8.0))
## Sets the model to a neutral, action-free state.
func idle() -> void:
_main_state_machine.travel("Idle")
_secondary_action_timer.start()
## Plays a one-shot attack animation.
## This animation does not play in parallel with other states.
func attack() -> void:
_main_state_machine.travel("Attack")
## Plays a one-shot power-off animation.
## This animation does not play in parallel with other states.
func power_off() -> void:
_main_state_machine.travel("PowerOff")
_secondary_action_timer.stop()
@@ -0,0 +1 @@
uid://j3jmdmhevnsu
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,40 @@
[gd_resource type="Animation" format=3 uid="uid://bqprpxg0a2kjd"]
[resource]
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Armature/Skeleton3D/bee_bot2:surface_material_override/2:shader_parameter/intensity")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 0,
"values": [0.0, 0.0, 2.0, 0.0, 2.0, 0.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Armature/Skeleton3D/bee_bot2:surface_material_override/3:shader_parameter/global_intensity")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [0.0, 1.0, 0.0, 4.0, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Armature/Skeleton3D/bee_bot2:surface_material_override/1:emission_energy_multiplier")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.1, 0.15, 0.2, 0.25),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [1.0, 0.0, 2.0, 0.0]
}
@@ -0,0 +1,15 @@
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://dx8xfrepk0a68"]
[ext_resource type="Shader" uid="uid://dmqt66iywru6d" path="res://addons/gdquest_models_shared/shaders/screen_shader.gdshader" id="1_itpnc"]
[ext_resource type="Texture2D" uid="uid://bvxkh2pa1nqdq" path="res://addons/gdquest_models_shared/textures/eye_mask.png" id="2_acs8v"]
[resource]
render_priority = 0
shader = ExtResource("1_itpnc")
shader_parameter/face_texture = ExtResource("2_acs8v")
shader_parameter/intensity = 2.0
shader_parameter/screen_color = Color(1, 0.584314, 0, 0.0784314)
shader_parameter/screen_red_offset = Vector2(0, 0)
shader_parameter/screen_green_offset = Vector2(0, 0)
shader_parameter/screen_blue_offset = Vector2(0, 0)
shader_parameter/pixel_size = 32.0
@@ -0,0 +1,7 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://bww7by8cvcuoe"]
[resource]
albedo_color = Color(0.470588, 0.470588, 0.470588, 1)
emission_enabled = true
emission = Color(1, 0.584314, 0, 1)
emission_energy_multiplier = 1.25
@@ -0,0 +1,11 @@
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://cruyb7vmbaabx"]
[ext_resource type="Shader" uid="uid://cucygkmpgoqm5" path="res://addons/gdquest_bee_bot/shader/bee_wings_shader.gdshader" id="1_b2ohr"]
[ext_resource type="Texture2D" uid="uid://blaqa1tkmd0xx" path="res://addons/gdquest_bee_bot/textures/wing_pattern.png" id="2_wfea8"]
[resource]
render_priority = 0
shader = ExtResource("1_b2ohr")
shader_parameter/wing_pattern_sampler = ExtResource("2_wfea8")
shader_parameter/emission_color = Color(1, 0.584314, 0, 1)
shader_parameter/global_intensity = 1.0
@@ -0,0 +1,13 @@
shader_type spatial;
render_mode cull_disabled;
uniform sampler2D wing_pattern_sampler : repeat_disable;
uniform vec3 emission_color : source_color = vec3(1.0);
uniform float global_intensity = 1.0;
void fragment() {
float wing_pattern = texture(wing_pattern_sampler, UV).x;
float pulse = ((1.0 + sin(UV.y + TIME)) / 2.0) + 0.5;
ALBEDO = vec3(0.0);
EMISSION = emission_color * smoothstep(0.51, 0.49, wing_pattern) * pulse * global_intensity;
}
@@ -0,0 +1 @@
uid://cucygkmpgoqm5
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blaqa1tkmd0xx"
path.s3tc="res://.godot/imported/wing_pattern.png-c2f65a14c2d4969a466827787be15035.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/gdquest_bee_bot/textures/wing_pattern.png"
dest_files=["res://.godot/imported/wing_pattern.png-c2f65a14c2d4969a466827787be15035.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
@@ -0,0 +1,36 @@
extends Node3D
@onready var _animation_tree: AnimationTree = $AnimationTree
@onready var _main_state_machine: AnimationNodeStateMachinePlayback = _animation_tree.get("parameters/StateMachine/playback")
@onready var _secondary_action_timer: Timer = $SecondaryActionTimer
func _on_secondary_action_timer_timeout() -> void:
if _main_state_machine.get_current_node() != "Idle":
return
_main_state_machine.travel("Shake")
_secondary_action_timer.start(randf_range(3.0, 8.0))
## Sets the model to a neutral, action-free state.
func idle() -> void:
_main_state_machine.travel("Idle")
_secondary_action_timer.start()
## Sets the model to a walking animation or forward movement.
func walk() -> void:
_main_state_machine.travel("Walk")
## Plays a one-shot attack animation.
## This animation does not play in parallel with other states.
func attack() -> void:
_main_state_machine.travel("Attack")
## Plays a one-shot power-off animation.
## This animation does not play in parallel with other states.
func power_off() -> void:
_main_state_machine.travel("PowerOff")
_secondary_action_timer.stop()
@@ -0,0 +1 @@
uid://bayxkg4v3lp4r
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://dg5h8p8fu3mhh"]
[ext_resource type="Shader" uid="uid://dmqt66iywru6d" path="res://addons/gdquest_models_shared/shaders/screen_shader.gdshader" id="1_n44cl"]
[ext_resource type="Texture2D" uid="uid://bvxkh2pa1nqdq" path="res://addons/gdquest_models_shared/textures/eye_mask.png" id="2_hdljt"]
[resource]
render_priority = 0
shader = ExtResource("1_n44cl")
shader_parameter/face_texture = ExtResource("2_hdljt")
shader_parameter/intensity = 1.25
shader_parameter/screen_color = Color(0.619608, 0.862745, 0, 0.0784314)
shader_parameter/screen_red_offset = Vector2(0, 0)
shader_parameter/screen_green_offset = Vector2(0, 0)
shader_parameter/screen_blue_offset = Vector2(0, 0)
shader_parameter/pixel_size = 32.0
@@ -0,0 +1,7 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://h2e57pyy6lu4"]
[resource]
albedo_color = Color(0.470588, 0.470588, 0.470588, 1)
emission_enabled = true
emission = Color(0.619608, 0.862745, 0, 1)
emission_energy_multiplier = 1.25
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,17 @@
[gd_resource type="Animation" format=3 uid="uid://b627b68jhaqwt"]
[resource]
length = 3.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Armature/Skeleton3D/gdbot_mesh:surface_material_override/2:emission_energy_multiplier")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1.5, 3),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.5, 3.0, 0.5]
}
Binary file not shown.
File diff suppressed because it is too large Load Diff
+71
View File
@@ -0,0 +1,71 @@
extends Node2D
var _blinking = null:
set = _set_blinking
@onready var _animation_player: AnimationPlayer = $AnimationPlayer
@onready var _blinking_timer: Timer = $BlinkTimer
@onready var _closed_eyes_timer: Timer = $ClosedTimer
@onready var _left_eye: Sprite2D = $LeftEye
@onready var _right_eye: Sprite2D = $RightEye
var eyes_textures = {
"open": preload("./texture/parts/eye_open.png"),
"closed": preload("./texture/parts/eye_close.png"),
}
var current_face = null:
set = _set_face
func _ready() -> void:
_blinking_timer.timeout.connect(_on_blink_timer_timeout)
_set_blinking(true)
current_face = "default"
func _set_blinking(value: bool) -> void:
_blinking = value
if _blinking:
_blinking_timer.start()
else:
_blinking_timer.stop()
func _on_blink_timer_timeout() -> void:
# Play secondary action rather than blink
if randf_range(0.0, 1.0) > 0.9:
_animation_player.play("look_around")
await _animation_player.animation_finished
else:
# Close eyes
_set_eyes("closed")
_closed_eyes_timer.start(randf_range(0.1, 0.25))
await _closed_eyes_timer.timeout
# Return to current eyes
_set_eyes("open")
if randf_range(0.0, 1.0) > 0.8:
_blinking_timer.wait_time = randf_range(0.1, 0.15)
else:
_blinking_timer.wait_time = randf_range(1.0, 4.0)
_blinking_timer.start()
func _set_eyes(eyes_name: String) -> void:
_left_eye.texture = eyes_textures[eyes_name]
_right_eye.texture = eyes_textures[eyes_name]
func _set_face(face_name: String) -> void:
if current_face == face_name:
return
current_face = face_name
_animation_player.play("RESET")
_animation_player.seek(0.0, true)
if face_name == "default":
_set_blinking(true)
return
_set_blinking(false)
if !_animation_player.has_animation(face_name):
push_error("Can't set GDBot's face to: '" + face_name + "'")
return
_animation_player.play(face_name)
+1
View File
@@ -0,0 +1 @@
uid://8sqitarj6fkw
+373
View File
@@ -0,0 +1,373 @@
[gd_scene load_steps=14 format=3 uid="uid://dvy2nao23i4rl"]
[ext_resource type="Script" path="res://addons/gdquest_gdbot/gdbot_face.gd" id="1_g7fgr"]
[ext_resource type="Texture2D" uid="uid://cbp882a2a27qw" path="res://addons/gdquest_gdbot/texture/parts/eye_happy.png" id="2_fa0xy"]
[ext_resource type="Texture2D" uid="uid://blacn6s3yc88h" path="res://addons/gdquest_gdbot/texture/parts/eye_open.png" id="2_qfyd4"]
[ext_resource type="Texture2D" uid="uid://dt0veafbpw6ih" path="res://addons/gdquest_gdbot/texture/parts/eye_spiral.png" id="3_rdwvm"]
[ext_resource type="Texture2D" uid="uid://blet3qwl4cbi3" path="res://addons/gdquest_gdbot/texture/parts/smile.png" id="3_xjkgv"]
[ext_resource type="Texture2D" uid="uid://b37rqx42rwpv" path="res://addons/gdquest_gdbot/texture/parts/open_mouth.png" id="4_wxn47"]
[ext_resource type="Texture2D" uid="uid://b3b243yxcn5vq" path="res://addons/gdquest_gdbot/texture/parts/eye_close.png" id="6_rog2n"]
[sub_resource type="Animation" id="Animation_33is7"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("LeftEye:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("2_qfyd4")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("RightEye:texture")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("2_qfyd4")]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Mouth:texture")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("3_xjkgv")]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("LeftEye:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("RightEye:rotation")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("LeftEye:flip_h")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("RightEye:flip_h")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Mouth:position")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 20.2222)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Mouth:scale")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1.2)]
}
[sub_resource type="Animation" id="Animation_ne3is"]
resource_name = "dizzy"
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("LeftEye:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 6.28319]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("RightEye:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 6.28319]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("RightEye:texture")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("3_rdwvm")]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("LeftEye:texture")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("3_rdwvm")]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Mouth:texture")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("4_wxn47")]
}
[sub_resource type="Animation" id="Animation_ttnon"]
resource_name = "happy"
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("LeftEye:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("2_fa0xy")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("RightEye:texture")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("2_fa0xy")]
}
[sub_resource type="Animation" id="Animation_rbq53"]
resource_name = "look_around"
length = 0.8
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("RightEye:texture")
tracks/0/interp = 0
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.4, 0.5, 0.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [ExtResource("6_rog2n"), ExtResource("2_qfyd4"), ExtResource("6_rog2n"), ExtResource("2_qfyd4"), ExtResource("6_rog2n")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("LeftEye:texture")
tracks/1/interp = 0
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1, 0.4, 0.5, 0.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [ExtResource("6_rog2n"), ExtResource("2_qfyd4"), ExtResource("6_rog2n"), ExtResource("2_qfyd4"), ExtResource("6_rog2n")]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("LeftEye:flip_h")
tracks/2/interp = 0
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.4, 0.5, 0.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [true, false, true, true, true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("RightEye:flip_h")
tracks/3/interp = 0
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.5, 0.7),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [false, true, false]
}
[sub_resource type="Animation" id="Animation_4tctg"]
resource_name = "sleepy"
length = 4.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Mouth:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("4_wxn47")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("RightEye:texture")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("6_rog2n")]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("LeftEye:texture")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("6_rog2n")]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Mouth:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(),
"transitions": PackedFloat32Array(),
"update": 0,
"values": []
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Mouth:scale")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(),
"transitions": PackedFloat32Array(),
"update": 0,
"values": []
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_l5i24"]
_data = {
"RESET": SubResource("Animation_33is7"),
"dizzy": SubResource("Animation_ne3is"),
"happy": SubResource("Animation_ttnon"),
"look_around": SubResource("Animation_rbq53"),
"sleepy": SubResource("Animation_4tctg")
}
[node name="GDbotFace" type="Node2D"]
script = ExtResource("1_g7fgr")
[node name="BG" type="ColorRect" parent="."]
offset_left = -144.0
offset_top = -144.0
offset_right = 144.0
offset_bottom = 144.0
size_flags_horizontal = 4
[node name="RightEye" type="Sprite2D" parent="."]
position = Vector2(45, -2)
texture = ExtResource("2_qfyd4")
[node name="LeftEye" type="Sprite2D" parent="."]
position = Vector2(-45, -2)
texture = ExtResource("2_qfyd4")
flip_h = true
[node name="Mouth" type="Sprite2D" parent="."]
position = Vector2(0, 20.2222)
scale = Vector2(1, 1.2)
texture = ExtResource("3_xjkgv")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_l5i24")
}
[node name="BlinkTimer" type="Timer" parent="."]
one_shot = true
[node name="ClosedTimer" type="Timer" parent="."]
one_shot = true
+41
View File
@@ -0,0 +1,41 @@
extends Node3D
## Represents the blending between the walking and running animations. It can be set to different values (e.g. 0.0 to 1.0) to adjust the balance between the two animations, resulting in the model appearing to walk or run depending on the value.
var walk_run_blending = 0.0:
set = _set_walk_run_blending
@onready var _animation_tree = $AnimationTree
@onready var _main_state_machine: AnimationNodeStateMachinePlayback = _animation_tree.get("parameters/StateMachine/playback")
@onready var _walk_run_blend_position: String = "parameters/StateMachine/Walk/blend_position"
@onready var _face = $SubViewport/GDbotFace
func _set_walk_run_blending(value: float) -> void:
walk_run_blending = value
_animation_tree.set(_walk_run_blend_position, walk_run_blending)
## Sets the model to a neutral, action-free state.
func idle() -> void:
_main_state_machine.travel("Idle")
## Sets the model to a walking or running animation or forward movement.
func walk() -> void:
_main_state_machine.travel("Walk")
## Sets the model to an upward-leaping animation, simulating a jump.
func jump() -> void:
_main_state_machine.travel("Jump")
## Sets the model to a downward animation, imitating a fall.
func fall() -> void:
_main_state_machine.travel("Fall")
## Changes the model's facial expression based on the provided input string values. Possible expressions include "default" (for default blinking), "happy" (for a joyful expression), "dizzy" (for spiraling eyes), and "sleepy" (for a drowsy countenance).
##[br][b]Note:[/b] To add new expressions, you can edit gdbot_face.tscn, which is a 2D scene utilized by a viewport node to display on Gdbot's face.
func set_face(face_name: String) -> void:
_face._set_face(face_name)
+1
View File
@@ -0,0 +1 @@
uid://dk2a8ahqexwrw
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://cdqqp1tvfod18"]
[ext_resource type="Shader" path="res://addons/gdquest_models_shared/shaders/screen_shader.gdshader" id="1_e2dsf"]
[ext_resource type="Texture2D" uid="uid://diovavdu1x8kw" path="res://addons/gdquest_gdbot/texture/open.png" id="2_rkdwa"]
[resource]
render_priority = 0
shader = ExtResource("1_e2dsf")
shader_parameter/intensity = 2.0
shader_parameter/screen_color = Color(0.101961, 0.662745, 1, 0.0196078)
shader_parameter/screen_red_offset = Vector2(0, 0)
shader_parameter/screen_green_offset = Vector2(0, 0)
shader_parameter/screen_blue_offset = Vector2(0, 0)
shader_parameter/pixel_size = 32.0
shader_parameter/face_texture = ExtResource("2_rkdwa")
@@ -0,0 +1,7 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://4ugdxr58llu8"]
[resource]
transparency = 1
albedo_color = Color(1, 1, 1, 0.443137)
metallic_specular = 1.0
roughness = 0.1
@@ -0,0 +1,7 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://cq6bdna8ieu87"]
[resource]
albedo_color = Color(0, 0, 0, 1)
emission_enabled = true
emission = Color(0, 1, 0.392157, 1)
emission_energy_multiplier = 2.39158
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgja2o4qwiksx"
path="res://.godot/imported/closed.png-a0d4bb93e3fde0a4a967c304af281c42.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_gdbot/texture/closed.png"
dest_files=["res://.godot/imported/closed.png-a0d4bb93e3fde0a4a967c304af281c42.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://diovavdu1x8kw"
path.s3tc="res://.godot/imported/open.png-eea127d43574a85b6af551f0008d5381.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/gdquest_gdbot/texture/open.png"
dest_files=["res://.godot/imported/open.png-eea127d43574a85b6af551f0008d5381.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b3b243yxcn5vq"
path="res://.godot/imported/eye_close.png-0cebdaffc8605f0c0009bd12bb25b124.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_gdbot/texture/parts/eye_close.png"
dest_files=["res://.godot/imported/eye_close.png-0cebdaffc8605f0c0009bd12bb25b124.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cbp882a2a27qw"
path="res://.godot/imported/eye_happy.png-6c8a35e5f4c65dfa2cdac1f4ea7438f7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_gdbot/texture/parts/eye_happy.png"
dest_files=["res://.godot/imported/eye_happy.png-6c8a35e5f4c65dfa2cdac1f4ea7438f7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blacn6s3yc88h"
path="res://.godot/imported/eye_open.png-76a49a2571ee0df872fc0402a3f89d69.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_gdbot/texture/parts/eye_open.png"
dest_files=["res://.godot/imported/eye_open.png-76a49a2571ee0df872fc0402a3f89d69.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 783 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dt0veafbpw6ih"
path="res://.godot/imported/eye_spiral.png-8e8946b707c89c1b1503bf7917ea2cb1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_gdbot/texture/parts/eye_spiral.png"
dest_files=["res://.godot/imported/eye_spiral.png-8e8946b707c89c1b1503bf7917ea2cb1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b37rqx42rwpv"
path="res://.godot/imported/open_mouth.png-145157c8de45bf8a387639d0470b76d0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_gdbot/texture/parts/open_mouth.png"
dest_files=["res://.godot/imported/open_mouth.png-145157c8de45bf8a387639d0470b76d0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blet3qwl4cbi3"
path="res://.godot/imported/smile.png-9a2f19f73f823e3167aa8282cb3dd32b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_gdbot/texture/parts/smile.png"
dest_files=["res://.godot/imported/smile.png-9a2f19f73f823e3167aa8282cb3dd32b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
+106
View File
@@ -0,0 +1,106 @@
extends Node3D
## Emitted when Gobot's feet hit the ground will running.
@warning_ignore("unused_signal")
signal foot_step
## Gobot's MeshInstance3D model.
@export var gobot_model: MeshInstance3D
## Determines whether blinking is enabled or disabled.
@export var blink = true:
set = _set_blink
@export var _left_eye_mat_override: String
@export var _right_eye_mat_override: String
@export var _open_eye: CompressedTexture2D
@export var _close_eye: CompressedTexture2D
@onready var _animation_tree: AnimationTree = %AnimationTree
@onready var _state_machine: AnimationNodeStateMachinePlayback = _animation_tree.get(
"parameters/StateMachine/playback",
)
@onready var _flip_shot_path: String = "parameters/FlipShot/request"
@onready var _hurt_shot_path: String = "parameters/HurtShot/request"
@onready var _blink_timer = %BlinkTimer
@onready var _closed_eyes_timer = %ClosedEyesTimer
@onready var _left_eye_mat: StandardMaterial3D = gobot_model.get(_left_eye_mat_override)
@onready var _right_eye_mat: StandardMaterial3D = gobot_model.get(_right_eye_mat_override)
func _ready() -> void:
_blink_timer.timeout.connect(
func() -> void:
_left_eye_mat.albedo_texture = _close_eye
_right_eye_mat.albedo_texture = _close_eye
_closed_eyes_timer.start(0.2)
)
_closed_eyes_timer.timeout.connect(
func() -> void:
_left_eye_mat.albedo_texture = _open_eye
_right_eye_mat.albedo_texture = _open_eye
_blink_timer.start(randf_range(1.0, 8.0))
)
func _set_blink(state: bool) -> void:
if _blink_timer == null or blink == state:
return
blink = state
if blink:
_blink_timer.start(0.2)
else:
_blink_timer.stop()
_closed_eyes_timer.stop()
## Sets the model to a neutral, action-free state.
func idle() -> void:
_state_machine.travel("Idle")
## Sets the model to a running animation or forward movement.
func run() -> void:
_state_machine.travel("Run")
## Sets the model to an upward-leaping animation, simulating a jump.
func jump() -> void:
_state_machine.travel("Jump")
## Sets the model to a downward animation, imitating a fall.
func fall() -> void:
_state_machine.travel("Fall")
## Sets the model to an edge-grabbing animation.
func edge_grab() -> void:
_state_machine.travel("EdgeGrab")
## Sets the model to a wall-sliding animation.
func wall_slide() -> void:
_state_machine.travel("WallSlide")
## Plays a one-shot front-flip animation.
## This animation does not play in parallel with other states.
func flip() -> void:
_animation_tree.set(_flip_shot_path, AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE)
## Makes a victory sign.
func victory_sign() -> void:
_state_machine.travel("VictorySign")
## Plays a one-shot hurt animation.
## This animation plays in parallel with other states.
func hurt() -> void:
_animation_tree.set(_hurt_shot_path, AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE)
var tween := create_tween().set_ease(Tween.EASE_OUT)
tween.tween_property(self, "scale", Vector3(1.2, 0.8, 1.2), 0.1)
tween.tween_property(self, "scale", Vector3.ONE, 0.2)
+1
View File
@@ -0,0 +1 @@
uid://02pjlm1ilk3w
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://div0enqs04w5j"]
[ext_resource type="Texture2D" uid="uid://dq675fmt1rg8c" path="res://addons/gdquest_gobot/textures/open_eye.png" id="1_5dt3l"]
[resource]
resource_local_to_scene = true
albedo_texture = ExtResource("1_5dt3l")
roughness = 0.6
uv1_offset = Vector3(0.1, 0, 0)
texture_repeat = false
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bt5o0sr6peltq"
path="res://.godot/imported/gobot_gobot_diffuse.png-480b3c5a031a8e6b4f9ff3bcd6cf3e81.ctex"
metadata={
"vram_texture": false
}
generator_parameters={}
[deps]
source_file="res://addons/gdquest_gobot/model/gobot_gobot_diffuse.png"
dest_files=["res://.godot/imported/gobot_gobot_diffuse.png-480b3c5a031a8e6b4f9ff3bcd6cf3e81.ctex"]
[params]
compress/mode=3
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d28w5bql3g21l"
path="res://.godot/imported/gobot_gobot_normal.png-8366be89fe368dc5e9657047e11fa342.ctex"
metadata={
"vram_texture": false
}
generator_parameters={}
[deps]
source_file="res://addons/gdquest_gobot/model/gobot_gobot_normal.png"
dest_files=["res://.godot/imported/gobot_gobot_normal.png-8366be89fe368dc5e9657047e11fa342.ctex"]
[params]
compress/mode=3
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://gobot_gobot_normal.png"
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgkj45d67dalm"
path="res://.godot/imported/gobot_gobot_roughness.png-5887c4e280f3fe4a428d75eac0776749.ctex"
metadata={
"vram_texture": false
}
generator_parameters={}
[deps]
source_file="res://addons/gdquest_gobot/model/gobot_gobot_roughness.png"
dest_files=["res://.godot/imported/gobot_gobot_roughness.png-5887c4e280f3fe4a428d75eac0776749.ctex"]
[params]
compress/mode=3
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cfdf62ci74tew"
path.s3tc="res://.godot/imported/closed_eyes.png-89c938d6fa34d5b8a8c82929ffbc17d1.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/gdquest_gobot/textures/closed_eyes.png"
dest_files=["res://.godot/imported/closed_eyes.png-89c938d6fa34d5b8a8c82929ffbc17d1.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://yj5yx07nva6l"
path.s3tc="res://.godot/imported/hurt_eyes.png-a882360c83770743adc56b1ea607f962.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/gdquest_gobot/textures/hurt_eyes.png"
dest_files=["res://.godot/imported/hurt_eyes.png-a882360c83770743adc56b1ea607f962.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dq675fmt1rg8c"
path.s3tc="res://.godot/imported/open_eye.png-517f89996bd929c096d85168ccc6e7a8.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/gdquest_gobot/textures/open_eye.png"
dest_files=["res://.godot/imported/open_eye.png-517f89996bd929c096d85168ccc6e7a8.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
@@ -0,0 +1,64 @@
@icon("./gdquest_model_viewer_3d.svg")
class_name GDQuestModelViewer3D extends Node
const _ModelViewer3d = preload("./viewer/model_viewer_3d.gd")
const _MODEL_VIEWER_3D_SCENE = preload("./viewer/model_viewer_3d.tscn")
signal children_ready
var _data_models_map := { }
var _scene: _ModelViewer3d
var _children_are_ready := false
@export var known_models: Array[ModelData]
func _ready() -> void:
_scene = _MODEL_VIEWER_3D_SCENE.instantiate() as _ModelViewer3d
_scene.known_models = known_models
add_child(_scene)
for index in known_models.size():
var model := known_models[index]
var model_name := model.name.to_lower().replace(" ", "_")
_data_models_map[model_name] = index
# allow the side menu to get its size
await get_tree().physics_frame
await get_tree().physics_frame
_children_are_ready = true
children_ready.emit()
set_model_from_arguments()
set_model_from_browser_hash()
func set_model_by_name(model_name: String) -> void:
if not (model_name in _data_models_map):
return
if not _children_are_ready:
await children_ready
_scene.model_selector.selection = _data_models_map[model_name]
func set_model_from_arguments() -> void:
var arguments := { }
for argument in OS.get_cmdline_args():
if argument.find("=") > -1:
var key_value := argument.split("=")
arguments[key_value[0].lstrip("--")] = key_value[1]
if 'model' in arguments:
set_model_by_name(arguments['model'])
func set_model_from_browser_hash() -> void:
if not OS.has_feature('web'):
return
var hash_bits = (JavaScriptBridge.eval("window.location.hash") as String).lstrip('#').split("&")
var arguments := { }
for hash in hash_bits:
if hash.find('=') > -1:
var key_value := hash.split("=")
arguments[key_value[0]] = key_value[1]
if 'model' in arguments:
set_model_by_name(arguments['model'])
@@ -0,0 +1 @@
uid://2elcbvga7dcs
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="16"
height="16"
viewBox="0 0 4.2333333 4.2333333"
version="1.1"
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="gdquest_model_viewer_3d.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="32"
inkscape:cx="11.984375"
inkscape:cy="5.703125"
inkscape:window-width="2560"
inkscape:window-height="1515"
inkscape:window-x="0"
inkscape:window-y="48"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid234" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="font-variation-settings:'wght' 900;fill:#ad7fa8;stroke-width:2.54;paint-order:stroke fill markers;stop-color:#000000"
id="rect236"
width="4.2333331"
height="4.2333331"
x="2.2252401e-07"
y="2.2252401e-07" />
<rect
style="font-variation-settings:'wght' 900;fill:#5c3566;stroke-width:2.54;paint-order:stroke fill markers;stop-color:#000000"
id="rect238"
width="3.7041664"
height="3.7041664"
x="0.26458335"
y="0.26458335" />
<path
style="font-variation-settings:'wght' 900;fill:#ad7fa8;stroke-width:2.54;paint-order:stroke fill markers;stop-color:#000000"
d="m 0.52916667,2.38125 -10e-9,1.3229166 1.32291664,0 V 3.175 l -0.79375,0 0,-0.79375 z"
id="path402"
sodipodi:nodetypes="ccccccc" />
<path
style="font-variation-settings:'wght' 900;fill:#ad7fa8;stroke-width:2.54;paint-order:stroke fill markers;stop-color:#000000"
d="M 3.7041667,2.38125 V 3.7041666 H 2.38125 V 3.175 H 3.175 V 2.38125 Z"
id="path554"
sodipodi:nodetypes="ccccccc" />
<path
style="font-variation-settings:'wght' 900;fill:#ad7fa8;stroke-width:2.54;paint-order:stroke fill markers;stop-color:#000000"
d="M 0.52916663,1.8520833 V 0.5291667 H 1.8520834 V 1.0583333 H 1.0583333 v 0.79375 z"
id="path556"
sodipodi:nodetypes="ccccccc" />
<path
style="font-variation-settings:'wght' 900;fill:#ad7fa8;stroke-width:2.54;paint-order:stroke fill markers;stop-color:#000000"
d="M 3.7041668,1.8520833 V 0.52916673 H 2.38125 V 1.0583333 h 0.7937501 v 0.79375 z"
id="path558"
sodipodi:nodetypes="ccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ct08dwhevk2ru"
path="res://.godot/imported/gdquest_model_viewer_3d.svg-78b008b75b5b695a18be909054c3179b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_model_viewer_3d/gdquest_model_viewer_3d.svg"
dest_files=["res://.godot/imported/gdquest_model_viewer_3d.svg-78b008b75b5b695a18be909054c3179b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
@@ -0,0 +1,7 @@
[plugin]
name="GDQuest Model Viewer 3D"
description="A turntable for 3D models"
author="GDQuest"
version="1.0"
script="plugin.gd"
+2
View File
@@ -0,0 +1,2 @@
@tool
extends EditorPlugin
@@ -0,0 +1 @@
uid://m22bqkb84le7
@@ -0,0 +1,7 @@
extends OptionButton
func setup(values: PackedStringArray) -> void:
clear()
for value in values:
add_item(value)
select(0)
@@ -0,0 +1 @@
uid://b3iqdl3p46v67
@@ -0,0 +1,14 @@
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://cqdapslfy1rva"]
[ext_resource type="Shader" path="res://addons/gdquest_model_viewer_3d/viewer/assets/shaders/bg.gdshader" id="1_4vwfw"]
[ext_resource type="Texture2D" uid="uid://bcls3ehldqget" path="res://addons/gdquest_model_viewer_3d/viewer/assets/textures/gdquest_logo_sdf.png" id="2_2b3l1"]
[resource]
render_priority = 0
shader = ExtResource("1_4vwfw")
shader_parameter/logo_scale = 2.0
shader_parameter/logo_opacity = 0.025
shader_parameter/border_color = Color(0.117647, 0.117647, 0.141176, 1)
shader_parameter/center_color = Color(0.137255, 0.14902, 0.160784, 1)
shader_parameter/ratio = Vector2(2, 1)
shader_parameter/logo_sampler_sdf = ExtResource("2_2b3l1")
@@ -0,0 +1,999 @@
# Blender 3.4.1
# www.blender.org
o Cylinder
v 0.000000 10.000000 -10.000000
v 1.950903 10.000000 -9.807853
v 3.826835 10.000000 -9.238795
v 5.555702 10.000000 -8.314696
v 7.071068 10.000000 -7.071068
v 8.314696 10.000000 -5.555702
v 9.238795 10.000000 -3.826835
v 9.807853 10.000000 -1.950903
v 10.000000 10.000000 0.000000
v 9.807853 10.000000 1.950903
v 9.238795 10.000000 3.826835
v 8.314696 10.000000 5.555702
v 7.071068 10.000000 7.071068
v 5.555702 10.000000 8.314696
v 3.826835 10.000000 9.238795
v 1.950903 10.000000 9.807853
v 0.000000 10.000000 10.000000
v -1.950903 10.000000 9.807853
v -3.826835 10.000000 9.238795
v -5.555702 10.000000 8.314696
v -7.071068 10.000000 7.071068
v -8.314696 10.000000 5.555702
v -9.238795 10.000000 3.826835
v -9.807853 10.000000 1.950903
v -10.000000 10.000000 0.000000
v -9.807853 10.000000 -1.950903
v -9.238795 10.000000 -3.826835
v -8.314696 10.000000 -5.555702
v -7.071068 10.000000 -7.071068
v -5.555702 10.000000 -8.314696
v -3.826835 10.000000 -9.238795
v -1.950903 10.000000 -9.807853
v 0.000000 0.000000 -7.990323
v 0.000000 2.000000 -10.000000
v 0.000000 0.097887 -8.611347
v 0.000000 0.381966 -9.171581
v 0.000000 0.824430 -9.616185
v 0.000000 1.381966 -9.901639
v 1.558833 0.000000 -7.836791
v 1.950903 2.000000 -9.807853
v 1.679990 0.097887 -8.445883
v 1.789286 0.381966 -8.995352
v 1.876024 0.824430 -9.431414
v 1.931714 1.381966 -9.711382
v 3.057765 0.000000 -7.382095
v 3.826835 2.000000 -9.238795
v 3.295421 0.097887 -7.955848
v 3.509813 0.381966 -8.473436
v 3.679956 0.824430 -8.884198
v 3.789194 1.381966 -9.147923
v 4.439185 0.000000 -6.643711
v 5.555702 2.000000 -8.314696
v 4.784208 0.097887 -7.160074
v 5.095458 0.381966 -7.625892
v 5.342466 0.824430 -7.995566
v 5.501056 1.381966 -8.232913
v 5.650012 0.000000 -5.650012
v 7.071068 2.000000 -7.071068
v 6.089141 0.097887 -6.089141
v 6.485287 0.381966 -6.485287
v 6.799670 0.824430 -6.799670
v 7.001516 1.381966 -7.001516
v 6.643711 0.000000 -4.439186
v 8.314696 2.000000 -5.555702
v 7.160073 0.097887 -4.784208
v 7.625892 0.381966 -5.095458
v 7.995566 0.824430 -5.342466
v 8.232912 1.381966 -5.501056
v 7.382095 0.000000 -3.057765
v 9.238795 2.000000 -3.826835
v 7.955848 0.097887 -3.295421
v 8.473436 0.381966 -3.509813
v 8.884198 0.824430 -3.679956
v 9.147923 1.381966 -3.789194
v 7.836791 0.000000 -1.558833
v 9.807853 2.000000 -1.950903
v 8.445883 0.097887 -1.679990
v 8.995352 0.381966 -1.789286
v 9.431414 0.824430 -1.876024
v 9.711382 1.381966 -1.931714
v 7.990323 0.000000 0.000000
v 10.000000 2.000000 0.000000
v 8.611347 0.097887 0.000000
v 9.171581 0.381966 0.000000
v 9.616185 0.824430 0.000000
v 9.901639 1.381966 0.000000
v 7.836791 0.000000 1.558833
v 9.807853 2.000000 1.950903
v 8.445883 0.097887 1.679990
v 8.995352 0.381966 1.789286
v 9.431414 0.824430 1.876024
v 9.711382 1.381966 1.931714
v 7.382095 0.000000 3.057765
v 9.238795 2.000000 3.826835
v 7.955848 0.097887 3.295421
v 8.473436 0.381966 3.509813
v 8.884198 0.824430 3.679956
v 9.147923 1.381966 3.789194
v 6.643711 0.000000 4.439185
v 8.314696 2.000000 5.555702
v 7.160074 0.097887 4.784208
v 7.625892 0.381966 5.095458
v 7.995566 0.824430 5.342466
v 8.232913 1.381966 5.501056
v 5.650012 0.000000 5.650012
v 7.071068 2.000000 7.071068
v 6.089141 0.097887 6.089141
v 6.485287 0.381966 6.485287
v 6.799670 0.824430 6.799670
v 7.001516 1.381966 7.001516
v 4.439186 0.000000 6.643711
v 5.555702 2.000000 8.314696
v 4.784208 0.097887 7.160073
v 5.095458 0.381966 7.625892
v 5.342466 0.824430 7.995566
v 5.501056 1.381966 8.232912
v 3.057765 0.000000 7.382095
v 3.826835 2.000000 9.238795
v 3.295421 0.097887 7.955848
v 3.509813 0.381966 8.473436
v 3.679956 0.824430 8.884198
v 3.789194 1.381966 9.147923
v 1.558833 0.000000 7.836791
v 1.950903 2.000000 9.807853
v 1.679990 0.097887 8.445883
v 1.789286 0.381966 8.995352
v 1.876024 0.824430 9.431414
v 1.931714 1.381966 9.711382
v 0.000000 0.000000 7.990323
v 0.000000 2.000000 10.000000
v 0.000000 0.097887 8.611347
v 0.000000 0.381966 9.171581
v 0.000000 0.824430 9.616185
v 0.000000 1.381966 9.901639
v -1.558833 0.000000 7.836791
v -1.950903 2.000000 9.807853
v -1.679990 0.097887 8.445883
v -1.789286 0.381966 8.995352
v -1.876024 0.824430 9.431414
v -1.931714 1.381966 9.711382
v -3.057765 0.000000 7.382095
v -3.826835 2.000000 9.238795
v -3.295421 0.097887 7.955848
v -3.509813 0.381966 8.473436
v -3.679956 0.824430 8.884198
v -3.789194 1.381966 9.147923
v -4.439185 0.000000 6.643711
v -5.555702 2.000000 8.314696
v -4.784208 0.097887 7.160074
v -5.095458 0.381966 7.625892
v -5.342466 0.824430 7.995566
v -5.501056 1.381966 8.232913
v -5.650012 0.000000 5.650012
v -7.071068 2.000000 7.071068
v -6.089141 0.097887 6.089141
v -6.485287 0.381966 6.485287
v -6.799670 0.824430 6.799670
v -7.001516 1.381966 7.001516
v -6.643711 0.000000 4.439186
v -8.314696 2.000000 5.555702
v -7.160073 0.097887 4.784208
v -7.625892 0.381966 5.095458
v -7.995566 0.824430 5.342466
v -8.232912 1.381966 5.501056
v -7.382095 0.000000 3.057765
v -9.238795 2.000000 3.826835
v -7.955848 0.097887 3.295421
v -8.473436 0.381966 3.509813
v -8.884198 0.824430 3.679956
v -9.147923 1.381966 3.789194
v -7.836791 0.000000 1.558833
v -9.807853 2.000000 1.950903
v -8.445883 0.097887 1.679990
v -8.995352 0.381966 1.789286
v -9.431414 0.824430 1.876024
v -9.711382 1.381966 1.931714
v -7.990323 0.000000 0.000000
v -10.000000 2.000000 0.000000
v -8.611347 0.097887 0.000000
v -9.171581 0.381966 0.000000
v -9.616185 0.824430 0.000000
v -9.901639 1.381966 0.000000
v -7.836791 0.000000 -1.558833
v -9.807853 2.000000 -1.950903
v -8.445883 0.097887 -1.679990
v -8.995352 0.381966 -1.789286
v -9.431414 0.824430 -1.876024
v -9.711382 1.381966 -1.931714
v -7.382095 0.000000 -3.057765
v -9.238795 2.000000 -3.826835
v -7.955848 0.097887 -3.295421
v -8.473436 0.381966 -3.509813
v -8.884198 0.824430 -3.679956
v -9.147923 1.381966 -3.789194
v -6.643711 0.000000 -4.439185
v -8.314696 2.000000 -5.555702
v -7.160074 0.097887 -4.784208
v -7.625892 0.381966 -5.095458
v -7.995566 0.824430 -5.342466
v -8.232913 1.381966 -5.501056
v -5.650012 0.000000 -5.650012
v -7.071068 2.000000 -7.071068
v -6.089141 0.097887 -6.089141
v -6.485287 0.381966 -6.485287
v -6.799670 0.824430 -6.799670
v -7.001516 1.381966 -7.001516
v -4.439186 0.000000 -6.643711
v -5.555702 2.000000 -8.314696
v -4.784208 0.097887 -7.160073
v -5.095458 0.381966 -7.625892
v -5.342466 0.824430 -7.995566
v -5.501056 1.381966 -8.232912
v -3.057765 0.000000 -7.382095
v -3.826835 2.000000 -9.238795
v -3.295421 0.097887 -7.955848
v -3.509813 0.381966 -8.473436
v -3.679956 0.824430 -8.884198
v -3.789194 1.381966 -9.147923
v -1.558833 0.000000 -7.836791
v -1.950903 2.000000 -9.807853
v -1.679990 0.097887 -8.445883
v -1.789286 0.381966 -8.995352
v -1.876024 0.824430 -9.431414
v -1.931714 1.381966 -9.711382
vn -0.1945 -0.0784 -0.9778
vn -0.1951 -0.0000 -0.9808
vn -0.0000 -0.0000 -1.0000
vn -0.0000 -0.0784 -0.9969
vn 0.3815 -0.0784 -0.9210
vn 0.3827 -0.0000 -0.9239
vn 0.5556 -0.0000 -0.8315
vn 0.5539 -0.0784 -0.8289
vn 0.7071 -0.0000 -0.7071
vn 0.7049 -0.0784 -0.7049
vn 0.8315 -0.0000 -0.5556
vn 0.8289 -0.0784 -0.5539
vn 0.9239 -0.0000 -0.3827
vn 0.9210 -0.0784 -0.3815
vn 0.9808 -0.0000 -0.1951
vn 0.9778 -0.0784 -0.1945
vn 1.0000 -0.0000 -0.0000
vn 0.9969 -0.0784 -0.0000
vn 0.9808 -0.0000 0.1951
vn 0.9778 -0.0784 0.1945
vn 0.9239 -0.0000 0.3827
vn 0.9210 -0.0784 0.3815
vn 0.8315 -0.0000 0.5556
vn 0.8289 -0.0784 0.5539
vn 0.7071 -0.0000 0.7071
vn 0.7049 -0.0784 0.7049
vn 0.5556 -0.0000 0.8315
vn 0.5539 -0.0784 0.8289
vn 0.3827 -0.0000 0.9239
vn 0.3815 -0.0784 0.9210
vn 0.1951 -0.0000 0.9808
vn 0.1945 -0.0784 0.9778
vn -0.0000 -0.0000 1.0000
vn -0.0000 -0.0784 0.9969
vn -0.1951 -0.0000 0.9808
vn -0.1945 -0.0784 0.9778
vn -0.3827 -0.0000 0.9239
vn -0.3815 -0.0784 0.9210
vn -0.5556 -0.0000 0.8315
vn -0.5539 -0.0784 0.8289
vn -0.7071 -0.0000 0.7071
vn -0.7049 -0.0784 0.7049
vn -0.8315 -0.0000 0.5556
vn -0.8289 -0.0784 0.5539
vn -0.9239 -0.0000 0.3827
vn -0.9210 -0.0784 0.3815
vn -0.9808 -0.0000 0.1951
vn -0.9778 -0.0784 0.1945
vn -1.0000 -0.0000 -0.0000
vn -0.9969 -0.0784 -0.0000
vn -0.9808 -0.0000 -0.1951
vn -0.9778 -0.0784 -0.1945
vn -0.9239 -0.0000 -0.3827
vn -0.9210 -0.0784 -0.3815
vn -0.8315 -0.0000 -0.5556
vn -0.8289 -0.0784 -0.5539
vn -0.7071 -0.0000 -0.7071
vn -0.7049 -0.0784 -0.7049
vn -0.5556 -0.0000 -0.8315
vn -0.5539 -0.0784 -0.8289
vn -0.3827 -0.0000 -0.9239
vn -0.3815 -0.0784 -0.9210
vn 0.1945 -0.0784 -0.9778
vn 0.1951 -0.0000 -0.9808
vn 0.1856 -0.3074 -0.9333
vn -0.0000 -0.3074 -0.9516
vn 0.1582 -0.5849 -0.7955
vn -0.0000 -0.5849 -0.8111
vn 0.1156 -0.8057 -0.5810
vn -0.0000 -0.8057 -0.5924
vn 0.0617 -0.9486 -0.3104
vn -0.0000 -0.9486 -0.3165
vn 0.0162 -0.9966 -0.0813
vn -0.0000 -0.9966 -0.0829
vn 0.3641 -0.3074 -0.8791
vn 0.3104 -0.5849 -0.7493
vn 0.2267 -0.8057 -0.5473
vn 0.1211 -0.9486 -0.2924
vn 0.0317 -0.9966 -0.0766
vn 0.5287 -0.3074 -0.7912
vn 0.4506 -0.5849 -0.6744
vn 0.3291 -0.8057 -0.4925
vn 0.1758 -0.9486 -0.2632
vn 0.0461 -0.9966 -0.0690
vn 0.6729 -0.3074 -0.6729
vn 0.5735 -0.5849 -0.5735
vn 0.4189 -0.8057 -0.4189
vn 0.2238 -0.9486 -0.2238
vn 0.0586 -0.9966 -0.0586
vn 0.7912 -0.3074 -0.5287
vn 0.6744 -0.5849 -0.4506
vn 0.4925 -0.8057 -0.3291
vn 0.2632 -0.9486 -0.1758
vn 0.0690 -0.9966 -0.0461
vn 0.8791 -0.3074 -0.3641
vn 0.7493 -0.5849 -0.3104
vn 0.5473 -0.8057 -0.2267
vn 0.2924 -0.9486 -0.1211
vn 0.0766 -0.9966 -0.0317
vn 0.9333 -0.3074 -0.1856
vn 0.7955 -0.5849 -0.1582
vn 0.5810 -0.8057 -0.1156
vn 0.3104 -0.9486 -0.0617
vn 0.0813 -0.9966 -0.0162
vn 0.9516 -0.3074 -0.0000
vn 0.8111 -0.5849 -0.0000
vn 0.5924 -0.8057 -0.0000
vn 0.3165 -0.9486 -0.0000
vn 0.0829 -0.9966 -0.0000
vn 0.9333 -0.3074 0.1856
vn 0.7955 -0.5849 0.1582
vn 0.5810 -0.8057 0.1156
vn 0.3104 -0.9486 0.0617
vn 0.0813 -0.9966 0.0162
vn 0.8791 -0.3074 0.3641
vn 0.7493 -0.5849 0.3104
vn 0.5473 -0.8057 0.2267
vn 0.2924 -0.9486 0.1211
vn 0.0766 -0.9966 0.0317
vn 0.7912 -0.3074 0.5287
vn 0.6744 -0.5849 0.4506
vn 0.4925 -0.8057 0.3291
vn 0.2632 -0.9486 0.1758
vn 0.0690 -0.9966 0.0461
vn 0.6729 -0.3074 0.6729
vn 0.5735 -0.5849 0.5735
vn 0.4189 -0.8057 0.4189
vn 0.2238 -0.9486 0.2238
vn 0.0586 -0.9966 0.0586
vn 0.5287 -0.3074 0.7912
vn 0.4506 -0.5849 0.6744
vn 0.3291 -0.8057 0.4925
vn 0.1758 -0.9486 0.2632
vn 0.0461 -0.9966 0.0690
vn 0.3641 -0.3074 0.8791
vn 0.3104 -0.5849 0.7493
vn 0.2267 -0.8057 0.5473
vn 0.1211 -0.9486 0.2924
vn 0.0317 -0.9966 0.0766
vn 0.1856 -0.3074 0.9333
vn 0.1582 -0.5849 0.7955
vn 0.1156 -0.8057 0.5810
vn 0.0617 -0.9486 0.3104
vn 0.0162 -0.9966 0.0813
vn -0.0000 -0.3074 0.9516
vn -0.0000 -0.5849 0.8111
vn -0.0000 -0.8057 0.5924
vn -0.0000 -0.9486 0.3165
vn -0.0000 -0.9966 0.0829
vn -0.1856 -0.3074 0.9333
vn -0.1582 -0.5849 0.7955
vn -0.1156 -0.8057 0.5810
vn -0.0617 -0.9486 0.3104
vn -0.0162 -0.9966 0.0813
vn -0.3641 -0.3074 0.8791
vn -0.3104 -0.5849 0.7493
vn -0.2267 -0.8057 0.5473
vn -0.1211 -0.9486 0.2924
vn -0.0317 -0.9966 0.0766
vn -0.5287 -0.3074 0.7912
vn -0.4506 -0.5849 0.6744
vn -0.3291 -0.8057 0.4925
vn -0.1758 -0.9486 0.2632
vn -0.0461 -0.9966 0.0690
vn -0.6729 -0.3074 0.6729
vn -0.5735 -0.5849 0.5735
vn -0.4189 -0.8057 0.4189
vn -0.2238 -0.9486 0.2238
vn -0.0586 -0.9966 0.0586
vn -0.7912 -0.3074 0.5287
vn -0.6744 -0.5849 0.4506
vn -0.4925 -0.8057 0.3291
vn -0.2632 -0.9486 0.1758
vn -0.0690 -0.9966 0.0461
vn -0.8791 -0.3074 0.3641
vn -0.7493 -0.5849 0.3104
vn -0.5473 -0.8057 0.2267
vn -0.2924 -0.9486 0.1211
vn -0.0766 -0.9966 0.0317
vn -0.9333 -0.3074 0.1856
vn -0.7955 -0.5849 0.1582
vn -0.5810 -0.8057 0.1156
vn -0.3104 -0.9486 0.0617
vn -0.0813 -0.9966 0.0162
vn -0.9516 -0.3074 -0.0000
vn -0.8111 -0.5849 -0.0000
vn -0.5924 -0.8057 -0.0000
vn -0.3165 -0.9486 -0.0000
vn -0.0829 -0.9966 -0.0000
vn -0.9333 -0.3074 -0.1856
vn -0.7955 -0.5849 -0.1582
vn -0.5810 -0.8057 -0.1156
vn -0.3104 -0.9486 -0.0617
vn -0.0813 -0.9966 -0.0162
vn -0.8791 -0.3074 -0.3641
vn -0.7493 -0.5849 -0.3104
vn -0.5473 -0.8057 -0.2267
vn -0.2924 -0.9486 -0.1211
vn -0.0766 -0.9966 -0.0317
vn -0.7912 -0.3074 -0.5287
vn -0.6744 -0.5849 -0.4506
vn -0.4925 -0.8057 -0.3291
vn -0.2632 -0.9486 -0.1758
vn -0.0690 -0.9966 -0.0461
vn -0.6729 -0.3074 -0.6729
vn -0.5735 -0.5849 -0.5735
vn -0.4189 -0.8057 -0.4189
vn -0.2238 -0.9486 -0.2238
vn -0.0586 -0.9966 -0.0586
vn -0.5287 -0.3074 -0.7912
vn -0.4506 -0.5849 -0.6744
vn -0.3291 -0.8057 -0.4925
vn -0.1758 -0.9486 -0.2632
vn -0.0461 -0.9966 -0.0690
vn -0.3641 -0.3074 -0.8791
vn -0.3104 -0.5849 -0.7493
vn -0.2267 -0.8057 -0.5473
vn -0.1211 -0.9486 -0.2924
vn -0.0317 -0.9966 -0.0766
vn -0.1856 -0.3074 -0.9333
vn -0.1582 -0.5849 -0.7955
vn -0.1156 -0.8057 -0.5810
vn -0.0617 -0.9486 -0.3104
vn -0.0162 -0.9966 -0.0813
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 0.968750 1.000000
vt 0.937500 1.000000
vt 0.906250 1.000000
vt 0.875000 1.000000
vt 0.843750 1.000000
vt 0.812500 1.000000
vt 0.781250 1.000000
vt 0.750000 1.000000
vt 0.718750 1.000000
vt 0.687500 1.000000
vt 0.656250 1.000000
vt 0.625000 1.000000
vt 0.593750 1.000000
vt 0.562500 1.000000
vt 0.531250 1.000000
vt 0.500000 1.000000
vt 0.468750 1.000000
vt 0.437500 1.000000
vt 0.406250 1.000000
vt 0.375000 1.000000
vt 0.343750 1.000000
vt 0.312500 1.000000
vt 0.281250 1.000000
vt 0.250000 1.000000
vt 0.218750 1.000000
vt 0.187500 1.000000
vt 0.156250 1.000000
vt 0.125000 1.000000
vt 0.093750 1.000000
vt 0.062500 1.000000
vt 0.031250 1.000000
vt 0.750000 0.441768
vt 1.000000 0.600000
vt 0.000000 0.600000
vt 0.750000 0.456672
vt 0.750000 0.470118
vt 0.999400 0.500000
vt 0.750899 0.489911
vt 0.000600 0.500000
vt 0.749101 0.489911
vt 0.999846 0.569098
vt 0.000154 0.569098
vt 0.787412 0.438083
vt 0.968750 0.600000
vt 0.790320 0.452701
vt 0.792943 0.465888
vt 0.969350 0.500000
vt 0.795923 0.485477
vt 0.968150 0.500000
vt 0.797686 0.485126
vt 0.968904 0.569098
vt 0.968596 0.569098
vt 0.823386 0.427170
vt 0.937500 0.600000
vt 0.829090 0.440940
vt 0.834235 0.453362
vt 0.938100 0.500000
vt 0.840980 0.471993
vt 0.936900 0.500000
vt 0.842640 0.471305
vt 0.937654 0.569098
vt 0.937346 0.569098
vt 0.856541 0.409449
vt 0.906250 0.600000
vt 0.864821 0.421842
vt 0.872291 0.433021
vt 0.906850 0.500000
vt 0.882541 0.449978
vt 0.905650 0.500000
vt 0.884035 0.448980
vt 0.906404 0.569098
vt 0.906096 0.569098
vt 0.885600 0.385600
vt 0.875000 0.600000
vt 0.896140 0.396139
vt 0.905647 0.405647
vt 0.875600 0.500000
vt 0.919008 0.420278
vt 0.874400 0.500000
vt 0.920278 0.419008
vt 0.875154 0.569098
vt 0.874846 0.569098
vt 0.909449 0.356541
vt 0.843750 0.600000
vt 0.921842 0.364821
vt 0.933021 0.372291
vt 0.844350 0.500000
vt 0.948980 0.384035
vt 0.843150 0.500000
vt 0.949978 0.382541
vt 0.843904 0.569098
vt 0.843596 0.569098
vt 0.927170 0.323386
vt 0.812500 0.600000
vt 0.940940 0.329090
vt 0.953362 0.334235
vt 0.813100 0.500000
vt 0.971305 0.342640
vt 0.811900 0.500000
vt 0.971993 0.340980
vt 0.812654 0.569098
vt 0.812346 0.569098
vt 0.938083 0.287412
vt 0.781250 0.600000
vt 0.952701 0.290320
vt 0.965888 0.292943
vt 0.781850 0.500000
vt 0.985126 0.297686
vt 0.780650 0.500000
vt 0.985477 0.295923
vt 0.781404 0.569098
vt 0.781096 0.569098
vt 0.941768 0.250000
vt 0.750000 0.600000
vt 0.956673 0.250000
vt 0.970118 0.250000
vt 0.750600 0.500000
vt 0.989912 0.250899
vt 0.749400 0.500000
vt 0.989911 0.249101
vt 0.750154 0.569098
vt 0.749846 0.569098
vt 0.938083 0.212588
vt 0.718750 0.600000
vt 0.952702 0.209680
vt 0.965888 0.207057
vt 0.719350 0.500000
vt 0.985477 0.204077
vt 0.718150 0.500000
vt 0.985126 0.202314
vt 0.718904 0.569098
vt 0.718596 0.569098
vt 0.927170 0.176614
vt 0.687500 0.600000
vt 0.940940 0.170910
vt 0.953362 0.165764
vt 0.688100 0.500000
vt 0.971993 0.159020
vt 0.686900 0.500000
vt 0.971305 0.157360
vt 0.687654 0.569098
vt 0.687346 0.569098
vt 0.909449 0.143460
vt 0.656250 0.600000
vt 0.921842 0.135179
vt 0.933021 0.127709
vt 0.656850 0.500000
vt 0.949978 0.117459
vt 0.655650 0.500000
vt 0.948980 0.115965
vt 0.656404 0.569098
vt 0.656096 0.569098
vt 0.885600 0.114400
vt 0.625000 0.600000
vt 0.896140 0.103861
vt 0.905647 0.094353
vt 0.625600 0.500000
vt 0.920278 0.080992
vt 0.624400 0.500000
vt 0.919008 0.079722
vt 0.625154 0.569098
vt 0.624846 0.569098
vt 0.856541 0.090551
vt 0.593750 0.600000
vt 0.864821 0.078158
vt 0.872291 0.066979
vt 0.594350 0.500000
vt 0.884035 0.051020
vt 0.593150 0.500000
vt 0.882541 0.050022
vt 0.593904 0.569098
vt 0.593596 0.569098
vt 0.823386 0.072830
vt 0.562500 0.600000
vt 0.829090 0.059060
vt 0.834235 0.046638
vt 0.563100 0.500000
vt 0.842640 0.028695
vt 0.561900 0.500000
vt 0.840980 0.028007
vt 0.562654 0.569098
vt 0.562346 0.569098
vt 0.787412 0.061917
vt 0.531250 0.600000
vt 0.790320 0.047299
vt 0.792943 0.034112
vt 0.531850 0.500000
vt 0.797686 0.014874
vt 0.530650 0.500000
vt 0.795923 0.014523
vt 0.531404 0.569098
vt 0.531096 0.569098
vt 0.750000 0.058232
vt 0.500000 0.600000
vt 0.750000 0.043328
vt 0.750000 0.029882
vt 0.500600 0.500000
vt 0.750899 0.010089
vt 0.499400 0.500000
vt 0.749101 0.010089
vt 0.500154 0.569098
vt 0.499846 0.569098
vt 0.712588 0.061917
vt 0.468750 0.600000
vt 0.709680 0.047299
vt 0.707057 0.034112
vt 0.469350 0.500000
vt 0.704077 0.014523
vt 0.468150 0.500000
vt 0.702314 0.014874
vt 0.468904 0.569098
vt 0.468596 0.569098
vt 0.676614 0.072830
vt 0.437500 0.600000
vt 0.670910 0.059060
vt 0.665764 0.046638
vt 0.438100 0.500000
vt 0.659020 0.028007
vt 0.436900 0.500000
vt 0.657360 0.028695
vt 0.437654 0.569098
vt 0.437346 0.569098
vt 0.643460 0.090551
vt 0.406250 0.600000
vt 0.635179 0.078158
vt 0.627709 0.066979
vt 0.406850 0.500000
vt 0.617459 0.050022
vt 0.405650 0.500000
vt 0.615965 0.051020
vt 0.406404 0.569098
vt 0.406096 0.569098
vt 0.614400 0.114400
vt 0.375000 0.600000
vt 0.603861 0.103861
vt 0.594353 0.094353
vt 0.375600 0.500000
vt 0.580992 0.079722
vt 0.374400 0.500000
vt 0.579722 0.080992
vt 0.375154 0.569098
vt 0.374846 0.569098
vt 0.590551 0.143460
vt 0.343750 0.600000
vt 0.578158 0.135179
vt 0.566979 0.127709
vt 0.344350 0.500000
vt 0.551020 0.115965
vt 0.343150 0.500000
vt 0.550022 0.117459
vt 0.343904 0.569098
vt 0.343596 0.569098
vt 0.572830 0.176614
vt 0.312500 0.600000
vt 0.559060 0.170910
vt 0.546637 0.165764
vt 0.313100 0.500000
vt 0.528695 0.157360
vt 0.311900 0.500000
vt 0.528007 0.159020
vt 0.312654 0.569098
vt 0.312346 0.569098
vt 0.561917 0.212588
vt 0.281250 0.600000
vt 0.547299 0.209680
vt 0.534112 0.207057
vt 0.281850 0.500000
vt 0.514874 0.202314
vt 0.280650 0.500000
vt 0.514523 0.204077
vt 0.281404 0.569098
vt 0.281096 0.569098
vt 0.558232 0.250000
vt 0.250000 0.600000
vt 0.543328 0.250000
vt 0.529882 0.250000
vt 0.250600 0.500000
vt 0.510089 0.249101
vt 0.249400 0.500000
vt 0.510088 0.250899
vt 0.250154 0.569098
vt 0.249846 0.569098
vt 0.561917 0.287412
vt 0.218750 0.600000
vt 0.547299 0.290320
vt 0.534112 0.292943
vt 0.219350 0.500000
vt 0.514523 0.295923
vt 0.218150 0.500000
vt 0.514874 0.297686
vt 0.218904 0.569098
vt 0.218596 0.569098
vt 0.572830 0.323386
vt 0.187500 0.600000
vt 0.559060 0.329090
vt 0.546638 0.334236
vt 0.188100 0.500000
vt 0.528007 0.340980
vt 0.186900 0.500000
vt 0.528695 0.342640
vt 0.187654 0.569098
vt 0.187346 0.569098
vt 0.590551 0.356540
vt 0.156250 0.600000
vt 0.578158 0.364821
vt 0.566979 0.372291
vt 0.156850 0.500000
vt 0.550022 0.382541
vt 0.155650 0.500000
vt 0.551020 0.384035
vt 0.156404 0.569098
vt 0.156096 0.569098
vt 0.614400 0.385600
vt 0.125000 0.600000
vt 0.603861 0.396139
vt 0.594353 0.405647
vt 0.125600 0.500000
vt 0.579722 0.419008
vt 0.124400 0.500000
vt 0.580992 0.420278
vt 0.125154 0.569098
vt 0.124846 0.569098
vt 0.643460 0.409449
vt 0.093750 0.600000
vt 0.635179 0.421842
vt 0.627709 0.433021
vt 0.094350 0.500000
vt 0.615965 0.448980
vt 0.093150 0.500000
vt 0.617459 0.449978
vt 0.093904 0.569098
vt 0.093596 0.569098
vt 0.676614 0.427170
vt 0.062500 0.600000
vt 0.670910 0.440940
vt 0.665765 0.453363
vt 0.063100 0.500000
vt 0.657360 0.471305
vt 0.061900 0.500000
vt 0.659020 0.471993
vt 0.062654 0.569098
vt 0.062346 0.569098
vt 0.712588 0.438083
vt 0.031250 0.600000
vt 0.709680 0.452701
vt 0.707057 0.465888
vt 0.031850 0.500000
vt 0.702314 0.485126
vt 0.030650 0.500000
vt 0.704077 0.485477
vt 0.031404 0.569098
vt 0.031096 0.569098
s 1
f 220/346/1 32/33/2 1/1/3 34/36/4
f 46/56/5 3/4/6 4/5/7 52/66/8
f 52/66/8 4/5/7 5/6/9 58/76/10
f 58/76/10 5/6/9 6/7/11 64/86/12
f 64/86/12 6/7/11 7/8/13 70/96/14
f 70/96/14 7/8/13 8/9/15 76/106/16
f 76/106/16 8/9/15 9/10/17 82/116/18
f 82/116/18 9/10/17 10/11/19 88/126/20
f 88/126/20 10/11/19 11/12/21 94/136/22
f 94/136/22 11/12/21 12/13/23 100/146/24
f 100/146/24 12/13/23 13/14/25 106/156/26
f 106/156/26 13/14/25 14/15/27 112/166/28
f 112/166/28 14/15/27 15/16/29 118/176/30
f 118/176/30 15/16/29 16/17/31 124/186/32
f 124/186/32 16/17/31 17/18/33 130/196/34
f 130/196/34 17/18/33 18/19/35 136/206/36
f 136/206/36 18/19/35 19/20/37 142/216/38
f 142/216/38 19/20/37 20/21/39 148/226/40
f 148/226/40 20/21/39 21/22/41 154/236/42
f 154/236/42 21/22/41 22/23/43 160/246/44
f 160/246/44 22/23/43 23/24/45 166/256/46
f 166/256/46 23/24/45 24/25/47 172/266/48
f 172/266/48 24/25/47 25/26/49 178/276/50
f 178/276/50 25/26/49 26/27/51 184/286/52
f 184/286/52 26/27/51 27/28/53 190/296/54
f 190/296/54 27/28/53 28/29/55 196/306/56
f 196/306/56 28/29/55 29/30/57 202/316/58
f 202/316/58 29/30/57 30/31/59 208/326/60
f 208/326/60 30/31/59 31/32/61 214/336/62
f 214/336/62 31/32/61 32/33/2 220/346/1
f 40/46/63 2/3/64 3/4/6 46/56/5
f 34/35/4 1/2/3 2/3/64 40/46/63
f 34/35/4 40/46/63 44/53/65 38/43/66
f 38/43/66 44/53/65 43/49/67 37/39/68
f 37/40/68 43/50/67 42/48/69 36/38/70
f 36/38/70 42/48/69 41/47/71 35/37/72
f 35/37/72 41/47/71 39/45/73 33/34/74
f 40/46/63 46/56/5 50/63/75 44/54/65
f 44/54/65 50/63/75 49/59/76 43/51/67
f 43/52/67 49/60/76 48/58/77 42/48/69
f 42/48/69 48/58/77 47/57/78 41/47/71
f 41/47/71 47/57/78 45/55/79 39/45/73
f 46/56/5 52/66/8 56/73/80 50/64/75
f 50/64/75 56/73/80 55/69/81 49/61/76
f 49/62/76 55/70/81 54/68/82 48/58/77
f 48/58/77 54/68/82 53/67/83 47/57/78
f 47/57/78 53/67/83 51/65/84 45/55/79
f 52/66/8 58/76/10 62/83/85 56/74/80
f 56/74/80 62/83/85 61/79/86 55/71/81
f 55/72/81 61/80/86 60/78/87 54/68/82
f 54/68/82 60/78/87 59/77/88 53/67/83
f 53/67/83 59/77/88 57/75/89 51/65/84
f 58/76/10 64/86/12 68/93/90 62/84/85
f 62/84/85 68/93/90 67/89/91 61/81/86
f 61/82/86 67/90/91 66/88/92 60/78/87
f 60/78/87 66/88/92 65/87/93 59/77/88
f 59/77/88 65/87/93 63/85/94 57/75/89
f 64/86/12 70/96/14 74/103/95 68/94/90
f 68/94/90 74/103/95 73/99/96 67/91/91
f 67/92/91 73/100/96 72/98/97 66/88/92
f 66/88/92 72/98/97 71/97/98 65/87/93
f 65/87/93 71/97/98 69/95/99 63/85/94
f 70/96/14 76/106/16 80/113/100 74/104/95
f 74/104/95 80/113/100 79/109/101 73/101/96
f 73/102/96 79/110/101 78/108/102 72/98/97
f 72/98/97 78/108/102 77/107/103 71/97/98
f 71/97/98 77/107/103 75/105/104 69/95/99
f 76/106/16 82/116/18 86/123/105 80/114/100
f 80/114/100 86/123/105 85/119/106 79/111/101
f 79/112/101 85/120/106 84/118/107 78/108/102
f 78/108/102 84/118/107 83/117/108 77/107/103
f 77/107/103 83/117/108 81/115/109 75/105/104
f 82/116/18 88/126/20 92/133/110 86/124/105
f 86/124/105 92/133/110 91/129/111 85/121/106
f 85/122/106 91/130/111 90/128/112 84/118/107
f 84/118/107 90/128/112 89/127/113 83/117/108
f 83/117/108 89/127/113 87/125/114 81/115/109
f 88/126/20 94/136/22 98/143/115 92/134/110
f 92/134/110 98/143/115 97/139/116 91/131/111
f 91/132/111 97/140/116 96/138/117 90/128/112
f 90/128/112 96/138/117 95/137/118 89/127/113
f 89/127/113 95/137/118 93/135/119 87/125/114
f 94/136/22 100/146/24 104/153/120 98/144/115
f 98/144/115 104/153/120 103/149/121 97/141/116
f 97/142/116 103/150/121 102/148/122 96/138/117
f 96/138/117 102/148/122 101/147/123 95/137/118
f 95/137/118 101/147/123 99/145/124 93/135/119
f 100/146/24 106/156/26 110/163/125 104/154/120
f 104/154/120 110/163/125 109/159/126 103/151/121
f 103/152/121 109/160/126 108/158/127 102/148/122
f 102/148/122 108/158/127 107/157/128 101/147/123
f 101/147/123 107/157/128 105/155/129 99/145/124
f 106/156/26 112/166/28 116/173/130 110/164/125
f 110/164/125 116/173/130 115/169/131 109/161/126
f 109/162/126 115/170/131 114/168/132 108/158/127
f 108/158/127 114/168/132 113/167/133 107/157/128
f 107/157/128 113/167/133 111/165/134 105/155/129
f 112/166/28 118/176/30 122/183/135 116/174/130
f 116/174/130 122/183/135 121/179/136 115/171/131
f 115/172/131 121/180/136 120/178/137 114/168/132
f 114/168/132 120/178/137 119/177/138 113/167/133
f 113/167/133 119/177/138 117/175/139 111/165/134
f 118/176/30 124/186/32 128/193/140 122/184/135
f 122/184/135 128/193/140 127/189/141 121/181/136
f 121/182/136 127/190/141 126/188/142 120/178/137
f 120/178/137 126/188/142 125/187/143 119/177/138
f 119/177/138 125/187/143 123/185/144 117/175/139
f 124/186/32 130/196/34 134/203/145 128/194/140
f 128/194/140 134/203/145 133/199/146 127/191/141
f 127/192/141 133/200/146 132/198/147 126/188/142
f 126/188/142 132/198/147 131/197/148 125/187/143
f 125/187/143 131/197/148 129/195/149 123/185/144
f 130/196/34 136/206/36 140/213/150 134/204/145
f 134/204/145 140/213/150 139/209/151 133/201/146
f 133/202/146 139/210/151 138/208/152 132/198/147
f 132/198/147 138/208/152 137/207/153 131/197/148
f 131/197/148 137/207/153 135/205/154 129/195/149
f 136/206/36 142/216/38 146/223/155 140/214/150
f 140/214/150 146/223/155 145/219/156 139/211/151
f 139/212/151 145/220/156 144/218/157 138/208/152
f 138/208/152 144/218/157 143/217/158 137/207/153
f 137/207/153 143/217/158 141/215/159 135/205/154
f 142/216/38 148/226/40 152/233/160 146/224/155
f 146/224/155 152/233/160 151/229/161 145/221/156
f 145/222/156 151/230/161 150/228/162 144/218/157
f 144/218/157 150/228/162 149/227/163 143/217/158
f 143/217/158 149/227/163 147/225/164 141/215/159
f 148/226/40 154/236/42 158/243/165 152/234/160
f 152/234/160 158/243/165 157/239/166 151/231/161
f 151/232/161 157/240/166 156/238/167 150/228/162
f 150/228/162 156/238/167 155/237/168 149/227/163
f 149/227/163 155/237/168 153/235/169 147/225/164
f 154/236/42 160/246/44 164/253/170 158/244/165
f 158/244/165 164/253/170 163/249/171 157/241/166
f 157/242/166 163/250/171 162/248/172 156/238/167
f 156/238/167 162/248/172 161/247/173 155/237/168
f 155/237/168 161/247/173 159/245/174 153/235/169
f 160/246/44 166/256/46 170/263/175 164/254/170
f 164/254/170 170/263/175 169/259/176 163/251/171
f 163/252/171 169/260/176 168/258/177 162/248/172
f 162/248/172 168/258/177 167/257/178 161/247/173
f 161/247/173 167/257/178 165/255/179 159/245/174
f 166/256/46 172/266/48 176/273/180 170/264/175
f 170/264/175 176/273/180 175/269/181 169/261/176
f 169/262/176 175/270/181 174/268/182 168/258/177
f 168/258/177 174/268/182 173/267/183 167/257/178
f 167/257/178 173/267/183 171/265/184 165/255/179
f 172/266/48 178/276/50 182/283/185 176/274/180
f 176/274/180 182/283/185 181/279/186 175/271/181
f 175/272/181 181/280/186 180/278/187 174/268/182
f 174/268/182 180/278/187 179/277/188 173/267/183
f 173/267/183 179/277/188 177/275/189 171/265/184
f 178/276/50 184/286/52 188/293/190 182/284/185
f 182/284/185 188/293/190 187/289/191 181/281/186
f 181/282/186 187/290/191 186/288/192 180/278/187
f 180/278/187 186/288/192 185/287/193 179/277/188
f 179/277/188 185/287/193 183/285/194 177/275/189
f 184/286/52 190/296/54 194/303/195 188/294/190
f 188/294/190 194/303/195 193/299/196 187/291/191
f 187/292/191 193/300/196 192/298/197 186/288/192
f 186/288/192 192/298/197 191/297/198 185/287/193
f 185/287/193 191/297/198 189/295/199 183/285/194
f 190/296/54 196/306/56 200/313/200 194/304/195
f 194/304/195 200/313/200 199/309/201 193/301/196
f 193/302/196 199/310/201 198/308/202 192/298/197
f 192/298/197 198/308/202 197/307/203 191/297/198
f 191/297/198 197/307/203 195/305/204 189/295/199
f 196/306/56 202/316/58 206/323/205 200/314/200
f 200/314/200 206/323/205 205/319/206 199/311/201
f 199/312/201 205/320/206 204/318/207 198/308/202
f 198/308/202 204/318/207 203/317/208 197/307/203
f 197/307/203 203/317/208 201/315/209 195/305/204
f 202/316/58 208/326/60 212/333/210 206/324/205
f 206/324/205 212/333/210 211/329/211 205/321/206
f 205/322/206 211/330/211 210/328/212 204/318/207
f 204/318/207 210/328/212 209/327/213 203/317/208
f 203/317/208 209/327/213 207/325/214 201/315/209
f 208/326/60 214/336/62 218/343/215 212/334/210
f 212/334/210 218/343/215 217/339/216 211/331/211
f 211/332/211 217/340/216 216/338/217 210/328/212
f 210/328/212 216/338/217 215/337/218 209/327/213
f 209/327/213 215/337/218 213/335/219 207/325/214
f 214/336/62 220/346/1 224/353/220 218/344/215
f 218/344/215 224/353/220 223/349/221 217/341/216
f 217/342/216 223/350/221 222/348/222 216/338/217
f 216/338/217 222/348/222 221/347/223 215/337/218
f 215/337/218 221/347/223 219/345/224 213/335/219
f 220/346/1 34/36/4 38/44/66 224/354/220
f 224/354/220 38/44/66 37/41/68 223/351/221
f 223/352/221 37/42/68 36/38/70 222/348/222
f 222/348/222 36/38/70 35/37/72 221/347/223
f 221/347/223 35/37/72 33/34/74 219/345/224
f 33/34/74 39/45/73 45/55/79 51/65/84 57/75/89 63/85/94 69/95/99 75/105/104 81/115/109 87/125/114 93/135/119 99/145/124 105/155/129 111/165/134 117/175/139 123/185/144 129/195/149 135/205/154 141/215/159 147/225/164 153/235/169 159/245/174 165/255/179 171/265/184 177/275/189 183/285/194 189/295/199 195/305/204 201/315/209 207/325/214 213/335/219 219/345/224
@@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://r33dd86y85gd"
path="res://.godot/imported/room_mesh.obj-18d913e73e4e90b43bdd3c53e3711fe4.mesh"
[deps]
files=["res://.godot/imported/room_mesh.obj-18d913e73e4e90b43bdd3c53e3711fe4.mesh"]
source_file="res://addons/gdquest_model_viewer_3d/viewer/assets/meshes/room_mesh.obj"
dest_files=["res://.godot/imported/room_mesh.obj-18d913e73e4e90b43bdd3c53e3711fe4.mesh", "res://.godot/imported/room_mesh.obj-18d913e73e4e90b43bdd3c53e3711fe4.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false
@@ -0,0 +1,20 @@
shader_type spatial;
render_mode unshaded;
uniform sampler2D logo_sampler_sdf : repeat_disable;
uniform float logo_scale = 1.0;
uniform float logo_opacity = 0.1;
uniform vec3 border_color : source_color = vec3(0.0);
uniform vec3 center_color : source_color = vec3(0.08);
uniform vec2 ratio = vec2(1.0);
const float logo_ratio = 1312.0 / 404.0;
void vertex() {
MODELVIEW_MATRIX = VIEW_MATRIX * mat4(INV_VIEW_MATRIX[0], INV_VIEW_MATRIX[1], INV_VIEW_MATRIX[2], MODEL_MATRIX[3]);
MODELVIEW_NORMAL_MATRIX = mat3(MODELVIEW_MATRIX);
}
void fragment() {
ALBEDO = vec3(mix(center_color, border_color, distance(vec2(0.5), UV)));
ALBEDO += smoothstep(0.45,0.5,texture(logo_sampler_sdf, ((UV - vec2(0.5, 0.2)) * vec2(1.0, logo_ratio) * ratio) * logo_scale + 0.5).a) * logo_opacity;
}
@@ -0,0 +1 @@
uid://cxb875k3l7iyn
@@ -0,0 +1,16 @@
shader_type spatial;
render_mode unshaded;
uniform vec3 grid_color : source_color = vec3(0.0);
uniform float grid_opacity = 0.1;
float grid(vec2 st, float res)
{
vec2 grid = fract(st*res);
return (step(0.015,grid.x) * step(0.015,grid.y));
}
void fragment() {
ALPHA = (1.0 - grid(UV, 10.0)) * smoothstep(0.5, 0.0, distance(vec2(0.5), UV)) * grid_opacity;
ALBEDO = grid_color;
}
@@ -0,0 +1 @@
uid://cmu4l7tiy7ipg
@@ -0,0 +1,5 @@
shader_type canvas_item;
void fragment() {
COLOR.a *= smoothstep(0.5, 0.49, distance(vec2(0.5), UV));
}
@@ -0,0 +1 @@
uid://cjhwwbt4lmm4r
Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b3hg20sllwpo"
path="res://.godot/imported/down_arrow_icon.png-ee822e47dcdd8783867f4b716f93a980.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdquest_model_viewer_3d/viewer/assets/textures/down_arrow_icon.png"
dest_files=["res://.godot/imported/down_arrow_icon.png-ee822e47dcdd8783867f4b716f93a980.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bcls3ehldqget"
path.s3tc="res://.godot/imported/gdquest_logo_sdf.png-98b2400d807abafebce1b06ba77b3333.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/gdquest_model_viewer_3d/viewer/assets/textures/gdquest_logo_sdf.png"
dest_files=["res://.godot/imported/gdquest_logo_sdf.png-98b2400d807abafebce1b06ba77b3333.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

Some files were not shown because too many files have changed in this diff Show More