Cashies tool library: dealgod photos -> TRELLIS -> shuntable paddock props
The dealgod.pro products database holds ~82k secondhand tool listings with photos (69k cached on the VPS). This turns the good ones into game assets: 15 tool classes curated from 45 candidates (socket set, air compressor, chain block, car ramp, OBD reader, trolley jack, engine crane, engine stand, toolbox, angle grinder, welder, jerry can, battery charger, jack stands, grease gun), each run through the MODELBEAST farm by the new tools/cc_to_glb.py: bg_remove_local cutout, then trellis_mac image->3D (1024 tier). Retries with backoff after a transient queue 401; the jerry can made trellis_mac exit 2 on two different photos and went through hunyuan3d_mlx instead (--operator flag), which ate it happily. Raw TRELLIS output is ~20MB per prop, so tools/slim_glb.py (headless Blender) decimates to 18k tris and re-exports with 1024 JPEG textures: the library lands at 27MB total for 15 props instead of ~300MB. The Willowbank paddock strews the whole library as RigidBodies -- TOOL_SPECS in dragway.gd gives each class its real-world size (TRELLIS output is unit-ish; the AABB is measured live and scaled) and an honest mass, so clipping the 70kg engine crane is a different event to punting the grease gun. The loader is directory-driven: drop a new GLB into assets/tools/ and it appears in the paddock next boot. Textures inherit whatever branding was in the source photos -- fine for secondhand background clutter, flagged in the README for anything that gets promoted to hero status. Smoke suite asserts every GLB in the library spawns as a prop. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
17
README.md
@ -299,6 +299,23 @@ Two things worth knowing before you re-prompt:
|
|||||||
The builder box-projects UVs at a per-material metres-per-tile scale; facades
|
The builder box-projects UVs at a per-material metres-per-tile scale; facades
|
||||||
pick glass/brick/concrete/heritage/sandstone by height, building tag and id hash.
|
pick glass/brick/concrete/heritage/sandstone by height, building tag and id hash.
|
||||||
|
|
||||||
|
### Cashies tool props (dealgod → TRELLIS)
|
||||||
|
|
||||||
|
`assets/tools/*.glb` are real secondhand-shop stock: photos pulled from the
|
||||||
|
dealgod.pro products database (~82k tool listings with images), curated one
|
||||||
|
clean shot per class, then run through the MODELBEAST farm with
|
||||||
|
[tools/cc_to_glb.py](tools/cc_to_glb.py) — `bg_remove_local` cutout first
|
||||||
|
(the farm's own docs call that the big quality jump), then `trellis_mac`
|
||||||
|
image→3D (1024 tier, 1024 texture ≈ prop-grade, a few MB each). The dragway
|
||||||
|
paddock strews the whole library as shuntable RigidBodies via
|
||||||
|
`TOOL_SPECS` in [dragway.gd](levels/willowbank_dragway/dragway.gd) — real-world
|
||||||
|
size per class (TRELLIS output is unit-ish) and honest masses, so clipping the
|
||||||
|
70 kg engine crane at speed is a different event to punting a grease gun.
|
||||||
|
The library is deliberately game-agnostic: photo in, scaled GLB out — reusable
|
||||||
|
for every future project. Textures inherit whatever branding was in the source
|
||||||
|
photo (they're secondhand listings), which is fine for props but don't promote
|
||||||
|
one to hero-asset status without checking what's written on it.
|
||||||
|
|
||||||
`woolies_carpark` is the one level still built in GDScript rather than as a GLB
|
`woolies_carpark` is the one level still built in GDScript rather than as a GLB
|
||||||
([carpark.gd](levels/woolies_carpark/carpark.gd)) — its parked shitboxes have to
|
([carpark.gd](levels/woolies_carpark/carpark.gd)) — its parked shitboxes have to
|
||||||
stay shuntable RigidBodies, which a static GLB can't carry. It picks its parked
|
stay shuntable RigidBodies, which a static GLB can't carry. It picks its parked
|
||||||
|
|||||||
BIN
assets/tools/angle_grinder.glb
Normal file
45
assets/tools/angle_grinder.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://nl02b6k7v026"
|
||||||
|
path="res://.godot/imported/angle_grinder.glb-55059b4166594232ecf7a3548514d48d.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/angle_grinder.glb"
|
||||||
|
dest_files=["res://.godot/imported/angle_grinder.glb-55059b4166594232ecf7a3548514d48d.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/angle_grinder_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 182 KiB |
43
assets/tools/angle_grinder_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bgx7y3c36ld0x"
|
||||||
|
path="res://.godot/imported/angle_grinder_Image_0.jpg-01d706181e0a16553e17624264d50e4e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "3c8d3ff771986047ee9ac1af7c646bbc"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/angle_grinder_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/angle_grinder_Image_0.jpg-01d706181e0a16553e17624264d50e4e.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=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=1
|
||||||
BIN
assets/tools/angle_grinder_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 158 KiB |
43
assets/tools/angle_grinder_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dorfsjgt6yl47"
|
||||||
|
path="res://.godot/imported/angle_grinder_Image_1.jpg-143b0e4e30c41e14a6234f83dc87d3a3.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "5b944766a4c6dfe2aa2adbf9c5a582af"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/angle_grinder_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/angle_grinder_Image_1.jpg-143b0e4e30c41e14a6234f83dc87d3a3.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=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=1
|
||||||
BIN
assets/tools/batt_charger.glb
Normal file
45
assets/tools/batt_charger.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://cn7tm7t6j3k4w"
|
||||||
|
path="res://.godot/imported/batt_charger.glb-4bfc7982feef035e86c27453ef3d96b6.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/batt_charger.glb"
|
||||||
|
dest_files=["res://.godot/imported/batt_charger.glb-4bfc7982feef035e86c27453ef3d96b6.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/batt_charger_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 194 KiB |
43
assets/tools/batt_charger_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cymxkheiy2rfd"
|
||||||
|
path="res://.godot/imported/batt_charger_Image_0.jpg-8b4e3e836229345b275629702f6203c6.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "88575dfbed853e78b667b91487ea2d88"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/batt_charger_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/batt_charger_Image_0.jpg-8b4e3e836229345b275629702f6203c6.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=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=1
|
||||||
BIN
assets/tools/batt_charger_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 142 KiB |
43
assets/tools/batt_charger_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bs64ncysdksj"
|
||||||
|
path="res://.godot/imported/batt_charger_Image_1.jpg-cc7a67f6df02f2a612591b0afe61c1e5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "c0b458f5c133c03a4ae5ba6023a759fc"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/batt_charger_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/batt_charger_Image_1.jpg-cc7a67f6df02f2a612591b0afe61c1e5.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=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=1
|
||||||
BIN
assets/tools/car_ramps.glb
Normal file
45
assets/tools/car_ramps.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://bmxdn8s3yet72"
|
||||||
|
path="res://.godot/imported/car_ramps.glb-937a6dce99e241509a43a26bd927e6f3.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/car_ramps.glb"
|
||||||
|
dest_files=["res://.godot/imported/car_ramps.glb-937a6dce99e241509a43a26bd927e6f3.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/car_ramps_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 149 KiB |
43
assets/tools/car_ramps_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://x5vk1ha30n0u"
|
||||||
|
path="res://.godot/imported/car_ramps_Image_0.jpg-d7cb5a962164eee0316d8498949fa52e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "d456a4fe21c1996b993ee305e8a4565f"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/car_ramps_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/car_ramps_Image_0.jpg-d7cb5a962164eee0316d8498949fa52e.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=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=1
|
||||||
BIN
assets/tools/car_ramps_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
43
assets/tools/car_ramps_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b0uflhp2880ar"
|
||||||
|
path="res://.godot/imported/car_ramps_Image_1.jpg-0bd3ced5f977e6dddce1f1feb8893bd4.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "10d5274b465c7affc2aacf4ab2ff1845"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/car_ramps_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/car_ramps_Image_1.jpg-0bd3ced5f977e6dddce1f1feb8893bd4.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=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=1
|
||||||
BIN
assets/tools/chain_hoist.glb
Normal file
45
assets/tools/chain_hoist.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://chemjried8rn2"
|
||||||
|
path="res://.godot/imported/chain_hoist.glb-e21c615a9371afeedd18d42fc9d11cf2.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/chain_hoist.glb"
|
||||||
|
dest_files=["res://.godot/imported/chain_hoist.glb-e21c615a9371afeedd18d42fc9d11cf2.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/chain_hoist_Image_0.png
Normal file
|
After Width: | Height: | Size: 2.1 MiB |
43
assets/tools/chain_hoist_Image_0.png.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dkv4xbobefkqd"
|
||||||
|
path="res://.godot/imported/chain_hoist_Image_0.png-7653ef3f90c8ecda3ddd581d462b37a7.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "af73461a51e13d9942cb7157910a70a0"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/chain_hoist_Image_0.png"
|
||||||
|
dest_files=["res://.godot/imported/chain_hoist_Image_0.png-7653ef3f90c8ecda3ddd581d462b37a7.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=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=1
|
||||||
BIN
assets/tools/chain_hoist_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 235 KiB |
43
assets/tools/chain_hoist_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cp8o65ytvyht1"
|
||||||
|
path="res://.godot/imported/chain_hoist_Image_1.jpg-1bab81e14574a95db05c4b9bd16743a5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "027fe5079386eabe89cdbbeb95bf0d5d"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/chain_hoist_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/chain_hoist_Image_1.jpg-1bab81e14574a95db05c4b9bd16743a5.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=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=1
|
||||||
BIN
assets/tools/compressor.glb
Normal file
45
assets/tools/compressor.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://we30xc0b3ges"
|
||||||
|
path="res://.godot/imported/compressor.glb-144fa350d613f3d6027156cd8e840d70.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/compressor.glb"
|
||||||
|
dest_files=["res://.godot/imported/compressor.glb-144fa350d613f3d6027156cd8e840d70.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/compressor_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 309 KiB |
43
assets/tools/compressor_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bt3kii4185ts0"
|
||||||
|
path="res://.godot/imported/compressor_Image_0.jpg-ff007f62a391c1897868691c6ba7a03f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "515de464d5c773f7bd68ee27b3cf4f37"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/compressor_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/compressor_Image_0.jpg-ff007f62a391c1897868691c6ba7a03f.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=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=1
|
||||||
BIN
assets/tools/compressor_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 177 KiB |
43
assets/tools/compressor_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://17rxupgmmobu"
|
||||||
|
path="res://.godot/imported/compressor_Image_1.jpg-8472be13eb5b4dbb58b0a6b1f5bc5129.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "a0412a18a0f51c4c3aaecdbee0c2e351"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/compressor_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/compressor_Image_1.jpg-8472be13eb5b4dbb58b0a6b1f5bc5129.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=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=1
|
||||||
BIN
assets/tools/engine_crane.glb
Normal file
45
assets/tools/engine_crane.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://dgqx77jjjqmh6"
|
||||||
|
path="res://.godot/imported/engine_crane.glb-e5bdc9b3abf4cd563f960dc0732315f9.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/engine_crane.glb"
|
||||||
|
dest_files=["res://.godot/imported/engine_crane.glb-e5bdc9b3abf4cd563f960dc0732315f9.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/engine_crane_Image_0.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
43
assets/tools/engine_crane_Image_0.png.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cg16h5061m0wk"
|
||||||
|
path="res://.godot/imported/engine_crane_Image_0.png-f43d70b6783298e3dd1c9c8e19cc084f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "f0bb13ca2165a52512dbc6a9663a4ed5"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/engine_crane_Image_0.png"
|
||||||
|
dest_files=["res://.godot/imported/engine_crane_Image_0.png-f43d70b6783298e3dd1c9c8e19cc084f.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=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=1
|
||||||
BIN
assets/tools/engine_crane_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 239 KiB |
43
assets/tools/engine_crane_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://n82efm8h2rt6"
|
||||||
|
path="res://.godot/imported/engine_crane_Image_1.jpg-80d830c1a9dd74f18c0a9df6bc077966.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "c772d233045fa35123e85253c0d4b353"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/engine_crane_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/engine_crane_Image_1.jpg-80d830c1a9dd74f18c0a9df6bc077966.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=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=1
|
||||||
BIN
assets/tools/engine_stand.glb
Normal file
45
assets/tools/engine_stand.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://c1q6aaao2hhwh"
|
||||||
|
path="res://.godot/imported/engine_stand.glb-31279a7651ca5f0edf057a974da9462d.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/engine_stand.glb"
|
||||||
|
dest_files=["res://.godot/imported/engine_stand.glb-31279a7651ca5f0edf057a974da9462d.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/engine_stand_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 274 KiB |
43
assets/tools/engine_stand_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://djfxjhgy61kxm"
|
||||||
|
path="res://.godot/imported/engine_stand_Image_0.jpg-5e424208efb2ed4f9f80bac8fc0eff53.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "d15f78047a4d9e5debcb167e107b7942"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/engine_stand_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/engine_stand_Image_0.jpg-5e424208efb2ed4f9f80bac8fc0eff53.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=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=1
|
||||||
BIN
assets/tools/engine_stand_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 162 KiB |
43
assets/tools/engine_stand_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bxcb1dc40t7dy"
|
||||||
|
path="res://.godot/imported/engine_stand_Image_1.jpg-ca3af820dfcfc11c6fd12a3cf4c71d77.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "ac85add3b5a8162d956314812c5802d8"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/engine_stand_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/engine_stand_Image_1.jpg-ca3af820dfcfc11c6fd12a3cf4c71d77.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=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=1
|
||||||
BIN
assets/tools/grease_gun.glb
Normal file
45
assets/tools/grease_gun.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://p3ncu7jigxhu"
|
||||||
|
path="res://.godot/imported/grease_gun.glb-3e19a4633da76389e901beff9da1567b.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/grease_gun.glb"
|
||||||
|
dest_files=["res://.godot/imported/grease_gun.glb-3e19a4633da76389e901beff9da1567b.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/grease_gun_Image_0.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
43
assets/tools/grease_gun_Image_0.png.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dki6lxfncbfq4"
|
||||||
|
path="res://.godot/imported/grease_gun_Image_0.png-4bf0c6a9a837cbcdf929323832fc23e6.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "ea6cb80364caa61a9f1254705387f2d3"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/grease_gun_Image_0.png"
|
||||||
|
dest_files=["res://.godot/imported/grease_gun_Image_0.png-4bf0c6a9a837cbcdf929323832fc23e6.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=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=1
|
||||||
BIN
assets/tools/grease_gun_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 228 KiB |
43
assets/tools/grease_gun_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ch4xxps2y7ny2"
|
||||||
|
path="res://.godot/imported/grease_gun_Image_1.jpg-e1cbeb72b9691e760a4cd6e5c0f1d45d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "6a6dec0503e73b8470f5d516d980731c"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/grease_gun_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/grease_gun_Image_1.jpg-e1cbeb72b9691e760a4cd6e5c0f1d45d.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=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=1
|
||||||
BIN
assets/tools/jack_stands.glb
Normal file
45
assets/tools/jack_stands.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://ctci8e71qlci"
|
||||||
|
path="res://.godot/imported/jack_stands.glb-e26275ee9fbb1ee9ea01434f70b2bdae.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/jack_stands.glb"
|
||||||
|
dest_files=["res://.godot/imported/jack_stands.glb-e26275ee9fbb1ee9ea01434f70b2bdae.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/jack_stands_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 216 KiB |
43
assets/tools/jack_stands_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bxobkifxtk3cm"
|
||||||
|
path="res://.godot/imported/jack_stands_Image_0.jpg-9ef1102596a984f9f7f1cbfd3930db25.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "8b2aa8982fc2819407775ecde5128e18"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/jack_stands_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/jack_stands_Image_0.jpg-9ef1102596a984f9f7f1cbfd3930db25.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=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=1
|
||||||
BIN
assets/tools/jack_stands_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 180 KiB |
43
assets/tools/jack_stands_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dpvc1nw472b2k"
|
||||||
|
path="res://.godot/imported/jack_stands_Image_1.jpg-9ef9ab8f508c2b6dd7d0b17beca6b9ed.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "77a462d75f0952c032b15d59c5723e34"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/jack_stands_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/jack_stands_Image_1.jpg-9ef9ab8f508c2b6dd7d0b17beca6b9ed.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=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=1
|
||||||
BIN
assets/tools/jerry_can.glb
Normal file
45
assets/tools/jerry_can.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://cd11yxrypnwm6"
|
||||||
|
path="res://.godot/imported/jerry_can.glb-499227af7db3e1ce657019c0dba475d1.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/jerry_can.glb"
|
||||||
|
dest_files=["res://.godot/imported/jerry_can.glb-499227af7db3e1ce657019c0dba475d1.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/jerry_can_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 158 KiB |
43
assets/tools/jerry_can_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d0vntu4g1cqqg"
|
||||||
|
path="res://.godot/imported/jerry_can_Image_0.jpg-dd4838135c2a727153dcb84e0805e5fe.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "71a8060fe1beb71ea3a3a9a231fd2fa9"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/jerry_can_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/jerry_can_Image_0.jpg-dd4838135c2a727153dcb84e0805e5fe.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=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=1
|
||||||
BIN
assets/tools/jerry_can_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 138 KiB |
43
assets/tools/jerry_can_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bjxbtoo73g2kt"
|
||||||
|
path="res://.godot/imported/jerry_can_Image_1.jpg-890570ced5ebba20cbeed118fd60742f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "912f77677a6030103dc7a08690b36c10"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/jerry_can_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/jerry_can_Image_1.jpg-890570ced5ebba20cbeed118fd60742f.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=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=1
|
||||||
BIN
assets/tools/obd_reader.glb
Normal file
45
assets/tools/obd_reader.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://bmh6jl16n3od"
|
||||||
|
path="res://.godot/imported/obd_reader.glb-f7a868a0013f3ddab52cf1fa4ce1909d.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/obd_reader.glb"
|
||||||
|
dest_files=["res://.godot/imported/obd_reader.glb-f7a868a0013f3ddab52cf1fa4ce1909d.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/obd_reader_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 251 KiB |
43
assets/tools/obd_reader_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://clabcoc0sfyvm"
|
||||||
|
path="res://.godot/imported/obd_reader_Image_0.jpg-19d2d499dacb352e3aafa443ecc92a64.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "cd2fd38f31cc5d03778f1c27de640246"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/obd_reader_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/obd_reader_Image_0.jpg-19d2d499dacb352e3aafa443ecc92a64.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=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=1
|
||||||
BIN
assets/tools/obd_reader_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 113 KiB |
43
assets/tools/obd_reader_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b6mtxrvmfclfw"
|
||||||
|
path="res://.godot/imported/obd_reader_Image_1.jpg-cc916e9184bb8708e4d5852f294ed702.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "ece2bf7873618226f2ef3a172633376d"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/obd_reader_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/obd_reader_Image_1.jpg-cc916e9184bb8708e4d5852f294ed702.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=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=1
|
||||||
BIN
assets/tools/socket_set.glb
Normal file
45
assets/tools/socket_set.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://bgoglks48d1kn"
|
||||||
|
path="res://.godot/imported/socket_set.glb-1075b20f6515439e0f19c61f6b0d67fd.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/socket_set.glb"
|
||||||
|
dest_files=["res://.godot/imported/socket_set.glb-1075b20f6515439e0f19c61f6b0d67fd.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/socket_set_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 190 KiB |
43
assets/tools/socket_set_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bt5gd0a8c4448"
|
||||||
|
path="res://.godot/imported/socket_set_Image_0.jpg-58a5cf4dbc573e312a01cd02961254dc.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "b8cf1b6039bf18c764ac2ff892f3d734"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/socket_set_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/socket_set_Image_0.jpg-58a5cf4dbc573e312a01cd02961254dc.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=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=1
|
||||||
BIN
assets/tools/socket_set_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 212 KiB |
43
assets/tools/socket_set_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d4ktkmskly7kq"
|
||||||
|
path="res://.godot/imported/socket_set_Image_1.jpg-0bcba31ea8eab1902fa829cdea74cba2.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "daffb23cc08459d112a7c445f234e3d4"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/socket_set_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/socket_set_Image_1.jpg-0bcba31ea8eab1902fa829cdea74cba2.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=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=1
|
||||||
BIN
assets/tools/toolbox.glb
Normal file
45
assets/tools/toolbox.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://crm5hfhikocsu"
|
||||||
|
path="res://.godot/imported/toolbox.glb-483649963f97f821c79617f72a7bf500.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/toolbox.glb"
|
||||||
|
dest_files=["res://.godot/imported/toolbox.glb-483649963f97f821c79617f72a7bf500.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/toolbox_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 228 KiB |
43
assets/tools/toolbox_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dlvqsohjv4g5t"
|
||||||
|
path="res://.godot/imported/toolbox_Image_0.jpg-b88e5ae81c1c52d90df3a2645d5d8253.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "f6cf6fa3f3aac55d15d000995d20a84b"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/toolbox_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/toolbox_Image_0.jpg-b88e5ae81c1c52d90df3a2645d5d8253.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=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=1
|
||||||
BIN
assets/tools/toolbox_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 85 KiB |
43
assets/tools/toolbox_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bm2oocbpub7c4"
|
||||||
|
path="res://.godot/imported/toolbox_Image_1.jpg-01d3635a9032c3c86c29837c0d9e5cfc.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "c079412f11fc608e7939054cd1b1bcda"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/toolbox_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/toolbox_Image_1.jpg-01d3635a9032c3c86c29837c0d9e5cfc.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=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=1
|
||||||
BIN
assets/tools/trolley_jack.glb
Normal file
45
assets/tools/trolley_jack.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://coe4tpykcwpu"
|
||||||
|
path="res://.godot/imported/trolley_jack.glb-808c7f8d0e225535e497b21ff121d21b.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/trolley_jack.glb"
|
||||||
|
dest_files=["res://.godot/imported/trolley_jack.glb-808c7f8d0e225535e497b21ff121d21b.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/trolley_jack_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 162 KiB |
43
assets/tools/trolley_jack_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://pundlpl3xipt"
|
||||||
|
path="res://.godot/imported/trolley_jack_Image_0.jpg-e9782c0a42c5249795555a7030843434.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "21f57150c31bdaa5a703141766c9bea6"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/trolley_jack_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/trolley_jack_Image_0.jpg-e9782c0a42c5249795555a7030843434.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=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=1
|
||||||
BIN
assets/tools/trolley_jack_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 213 KiB |
43
assets/tools/trolley_jack_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://od8g6nv31mio"
|
||||||
|
path="res://.godot/imported/trolley_jack_Image_1.jpg-723d6e0df7a187ed306d05c3c875ce16.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "24e69ffd41a715524dd94ad03af85e1f"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/trolley_jack_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/trolley_jack_Image_1.jpg-723d6e0df7a187ed306d05c3c875ce16.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=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=1
|
||||||
BIN
assets/tools/welder.glb
Normal file
45
assets/tools/welder.glb.import
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://dw2ynuvnfm3k2"
|
||||||
|
path="res://.godot/imported/welder.glb-9b6889ab8a792c988e68c235d9d2cee6.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/welder.glb"
|
||||||
|
dest_files=["res://.godot/imported/welder.glb-9b6889ab8a792c988e68c235d9d2cee6.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
assets/tools/welder_Image_0.jpg
Normal file
|
After Width: | Height: | Size: 199 KiB |
43
assets/tools/welder_Image_0.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://crh8mxwskqydu"
|
||||||
|
path="res://.godot/imported/welder_Image_0.jpg-e15c19429fbf0df66b1bd2fe7c6793ef.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "d06d868e58761075d9a99e7a670a546b"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/welder_Image_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/welder_Image_0.jpg-e15c19429fbf0df66b1bd2fe7c6793ef.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=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=1
|
||||||
BIN
assets/tools/welder_Image_1.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
43
assets/tools/welder_Image_1.jpg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dg8m0ngt5axqh"
|
||||||
|
path="res://.godot/imported/welder_Image_1.jpg-d24b90967117c4c52c9b64dc6296dcbc.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "441e51a4dbeaa7206080c3ccbafb8067"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tools/welder_Image_1.jpg"
|
||||||
|
dest_files=["res://.godot/imported/welder_Image_1.jpg-d24b90967117c4c52c9b64dc6296dcbc.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=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=1
|
||||||
@ -14,6 +14,27 @@ const STRIP_HALF := 12.0 # wall-to-wall half width
|
|||||||
const FINISH := -402.0
|
const FINISH := -402.0
|
||||||
const SHUTDOWN_END := -640.0
|
const SHUTDOWN_END := -640.0
|
||||||
|
|
||||||
|
## Real Cashies stock, TRELLIS'd into GLBs (tools/cc_to_glb.py). Scale is the
|
||||||
|
## longest dimension in metres; mass makes clipping an engine crane at 80
|
||||||
|
## a different event to punting a grease gun.
|
||||||
|
const TOOL_SPECS := {
|
||||||
|
"angle_grinder": {"size": 0.35, "mass": 3.0},
|
||||||
|
"batt_charger": {"size": 0.28, "mass": 4.0},
|
||||||
|
"car_ramps": {"size": 0.95, "mass": 9.0},
|
||||||
|
"chain_hoist": {"size": 0.45, "mass": 12.0},
|
||||||
|
"compressor": {"size": 0.55, "mass": 14.0},
|
||||||
|
"engine_crane": {"size": 1.6, "mass": 70.0},
|
||||||
|
"engine_stand": {"size": 0.95, "mass": 30.0},
|
||||||
|
"grease_gun": {"size": 0.4, "mass": 2.0},
|
||||||
|
"jack_stands": {"size": 0.45, "mass": 8.0},
|
||||||
|
"jerry_can": {"size": 0.48, "mass": 6.0},
|
||||||
|
"obd_reader": {"size": 0.22, "mass": 1.0},
|
||||||
|
"socket_set": {"size": 0.4, "mass": 5.0},
|
||||||
|
"toolbox": {"size": 0.7, "mass": 18.0},
|
||||||
|
"trolley_jack": {"size": 0.65, "mass": 20.0},
|
||||||
|
"welder": {"size": 0.5, "mass": 16.0},
|
||||||
|
}
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var rng := RandomNumberGenerator.new()
|
var rng := RandomNumberGenerator.new()
|
||||||
rng.seed = 1320 # a respectable ET
|
rng.seed = 1320 # a respectable ET
|
||||||
@ -77,6 +98,7 @@ func _ready() -> void:
|
|||||||
add_child(m)
|
add_child(m)
|
||||||
|
|
||||||
_gums(rng)
|
_gums(rng)
|
||||||
|
_paddock_tools(rng)
|
||||||
_race_path()
|
_race_path()
|
||||||
|
|
||||||
func _mat(tex: String, scale: float, rough := 0.9) -> StandardMaterial3D:
|
func _mat(tex: String, scale: float, rough := 0.9) -> StandardMaterial3D:
|
||||||
@ -246,6 +268,57 @@ func _gums(rng: RandomNumberGenerator) -> void:
|
|||||||
crown.position = at + Vector3(0, cm.height + sm.radius * 0.4, 0)
|
crown.position = at + Vector3(0, cm.height + sm.radius * 0.4, 0)
|
||||||
add_child(crown)
|
add_child(crown)
|
||||||
|
|
||||||
|
func _paddock_tools(rng: RandomNumberGenerator) -> void:
|
||||||
|
## Strew the paddock with the TRELLIS'd Cashies tool library -- real
|
||||||
|
## secondhand clutter, every piece a shuntable RigidBody. Scale comes from
|
||||||
|
## TOOL_SPECS (TRELLIS output is unit-ish), base sat on the ground.
|
||||||
|
var dir := DirAccess.open("res://assets/tools")
|
||||||
|
if dir == null:
|
||||||
|
return
|
||||||
|
var names: Array[String] = []
|
||||||
|
for f in dir.get_files():
|
||||||
|
if f.ends_with(".glb"):
|
||||||
|
names.append(f.get_basename())
|
||||||
|
names.sort() # deterministic layout
|
||||||
|
var i := 0
|
||||||
|
for n in names:
|
||||||
|
var scene := load("res://assets/tools/%s.glb" % n) as PackedScene
|
||||||
|
if scene == null:
|
||||||
|
continue
|
||||||
|
var spec: Dictionary = TOOL_SPECS.get(n, {"size": 0.5, "mass": 8.0})
|
||||||
|
var model := scene.instantiate() as Node3D
|
||||||
|
add_child(model) # into the tree first so global AABBs are real
|
||||||
|
var aabb := AABB()
|
||||||
|
var first := true
|
||||||
|
for mi in model.find_children("*", "MeshInstance3D", true, false):
|
||||||
|
var b: AABB = (mi as MeshInstance3D).global_transform * (mi as MeshInstance3D).get_aabb()
|
||||||
|
aabb = b if first else aabb.merge(b)
|
||||||
|
first = false
|
||||||
|
remove_child(model)
|
||||||
|
if first:
|
||||||
|
model.queue_free()
|
||||||
|
continue
|
||||||
|
var s: float = float(spec["size"]) / maxf(aabb.size.x, maxf(aabb.size.y, aabb.size.z))
|
||||||
|
var body := RigidBody3D.new()
|
||||||
|
body.mass = float(spec["mass"])
|
||||||
|
body.set_meta("cc_tool", n)
|
||||||
|
var cs := CollisionShape3D.new()
|
||||||
|
var box := BoxShape3D.new()
|
||||||
|
box.size = (aabb.size * s).clamp(Vector3.ONE * 0.08, Vector3.ONE * 3.0)
|
||||||
|
cs.shape = box
|
||||||
|
cs.position = aabb.get_center() * s
|
||||||
|
body.add_child(cs)
|
||||||
|
model.scale = Vector3.ONE * s
|
||||||
|
body.add_child(model)
|
||||||
|
add_child(body)
|
||||||
|
var spot := Vector3(24.0 + (i % 4) * 4.5 + rng.randf_range(-0.8, 0.8),
|
||||||
|
0.02 - aabb.position.y * s,
|
||||||
|
-16.0 - float(i / 4) * 7.0 + rng.randf_range(-0.8, 0.8))
|
||||||
|
body.global_position = spot
|
||||||
|
body.rotate_y(rng.randf() * TAU)
|
||||||
|
body.sleeping = true
|
||||||
|
i += 1
|
||||||
|
|
||||||
func _race_path() -> void:
|
func _race_path() -> void:
|
||||||
# loop for cruise traffic: down the strip, back up the return road
|
# loop for cruise traffic: down the strip, back up the return road
|
||||||
var path := Path3D.new()
|
var path := Path3D.new()
|
||||||
|
|||||||
10
push18.log
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Enumerating objects: 21, done.
|
||||||
|
Counting objects: 4% (1/21)
Counting objects: 9% (2/21)
Counting objects: 14% (3/21)
Counting objects: 19% (4/21)
Counting objects: 23% (5/21)
Counting objects: 28% (6/21)
Counting objects: 33% (7/21)
Counting objects: 38% (8/21)
Counting objects: 42% (9/21)
Counting objects: 47% (10/21)
Counting objects: 52% (11/21)
Counting objects: 57% (12/21)
Counting objects: 61% (13/21)
Counting objects: 66% (14/21)
Counting objects: 71% (15/21)
Counting objects: 76% (16/21)
Counting objects: 80% (17/21)
Counting objects: 85% (18/21)
Counting objects: 90% (19/21)
Counting objects: 95% (20/21)
Counting objects: 100% (21/21)
Counting objects: 100% (21/21), done.
|
||||||
|
Delta compression using up to 32 threads
|
||||||
|
Compressing objects: 8% (1/12)
Compressing objects: 16% (2/12)
Compressing objects: 25% (3/12)
Compressing objects: 33% (4/12)
Compressing objects: 41% (5/12)
Compressing objects: 50% (6/12)
Compressing objects: 58% (7/12)
Compressing objects: 66% (8/12)
Compressing objects: 75% (9/12)
Compressing objects: 83% (10/12)
Compressing objects: 91% (11/12)
Compressing objects: 100% (12/12)
Compressing objects: 100% (12/12), done.
|
||||||
|
Writing objects: 7% (1/13)
Writing objects: 15% (2/13)
Writing objects: 23% (3/13)
Writing objects: 30% (4/13)
Writing objects: 38% (5/13)
Writing objects: 46% (6/13)
Writing objects: 53% (7/13)
Writing objects: 61% (8/13)
Writing objects: 69% (9/13)
Writing objects: 76% (10/13)
Writing objects: 84% (11/13)
Writing objects: 92% (12/13)
Writing objects: 100% (13/13)
Writing objects: 100% (13/13), 10.48 KiB | 10.48 MiB/s, done.
|
||||||
|
Total 13 (delta 8), reused 0 (delta 0), pack-reused 0 (from 0)
|
||||||
|
remote: . Processing 1 references
|
||||||
|
remote: Processed 1 references in total
|
||||||
|
To ssh://100.71.119.27:222/monster/burnoutinfinityshitbox.git
|
||||||
|
927b3a9..4f91b34 main -> main
|
||||||
@ -215,6 +215,19 @@ func _run() -> void:
|
|||||||
_check(game.rivals[0].stats.resource_path.contains("morry"),
|
_check(game.rivals[0].stats.resource_path.contains("morry"),
|
||||||
"rung 0 rival isn't Nanna (%s)" % game.rivals[0].stats.resource_path)
|
"rung 0 rival isn't Nanna (%s)" % game.rivals[0].stats.resource_path)
|
||||||
_check(game._tree_bulbs.size() == 6, "christmas tree bulbs missing (%d)" % game._tree_bulbs.size())
|
_check(game._tree_bulbs.size() == 6, "christmas tree bulbs missing (%d)" % game._tree_bulbs.size())
|
||||||
|
# TRELLIS'd cashies tools: once the library exists, the paddock is strewn
|
||||||
|
var tool_dir := DirAccess.open("res://assets/tools")
|
||||||
|
if tool_dir != null:
|
||||||
|
var glbs := 0
|
||||||
|
for f in tool_dir.get_files():
|
||||||
|
if f.ends_with(".glb"):
|
||||||
|
glbs += 1
|
||||||
|
if glbs > 0:
|
||||||
|
var strewn := 0
|
||||||
|
for n in game.find_children("*", "RigidBody3D", true, false):
|
||||||
|
if n.has_meta("cc_tool"):
|
||||||
|
strewn += 1
|
||||||
|
_check(strewn == glbs, "tool library has %d GLBs but %d spawned" % [glbs, strewn])
|
||||||
await physics_frame
|
await physics_frame
|
||||||
_check(game.rivals[0].power_scale == 0.0, "rival not held at the tree")
|
_check(game.rivals[0].power_scale == 0.0, "rival not held at the tree")
|
||||||
# burnout in the box: DRIFT+GAS warms the tyres and must NOT roll the beams
|
# burnout in the box: DRIFT+GAS warms the tyres and must NOT roll the beams
|
||||||
|
|||||||
169
tools/cc_to_glb.py
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Cashies photo -> game prop: bg_remove_local then trellis_mac on MODELBEAST.
|
||||||
|
|
||||||
|
Usage: cc_to_glb.py <name=image> [name=image ...] [--out DIR] [--workers N]
|
||||||
|
|
||||||
|
For each input image: upload -> bg_remove_local (clean cutout; the op's own
|
||||||
|
docs call this the big quality jump before image->3D) -> trellis_mac
|
||||||
|
(1024 tier, 1024 texture: prop-grade, keeps GLBs a few MB) -> download the
|
||||||
|
GLB to <out>/<name>.glb. Progress lines are grep-friendly: "DONE name" /
|
||||||
|
"FAIL name reason". Queue + token per ~/.claude/skills/fleet/SKILL.md; the
|
||||||
|
guest token allows 4 active jobs, so keep --workers at 2 (each worker holds
|
||||||
|
one job at a time, bg+trellis are sequential per item).
|
||||||
|
|
||||||
|
Job log JSON carries raw control chars -- scrub before json.loads.
|
||||||
|
"""
|
||||||
|
import json
|
||||||
|
import mimetypes
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
|
import urllib.request
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
HOST = os.environ.get("MB_HOST", "http://100.89.131.57:8777")
|
||||||
|
ENVS = ["~/Documents/fluxgod-work/.env", "~/Documents/backnforth/.env"]
|
||||||
|
|
||||||
|
|
||||||
|
def token():
|
||||||
|
for p in ENVS:
|
||||||
|
p = os.path.expanduser(p)
|
||||||
|
if not os.path.exists(p):
|
||||||
|
continue
|
||||||
|
for line in open(p):
|
||||||
|
if line.startswith("MB_TOKEN"):
|
||||||
|
return line.split("=", 1)[1].strip().strip("'\"")
|
||||||
|
sys.exit("no MB_TOKEN found on disk")
|
||||||
|
|
||||||
|
|
||||||
|
TOK = token()
|
||||||
|
|
||||||
|
|
||||||
|
def call(path, data=None, headers=None, raw=False, tries=4):
|
||||||
|
# the queue occasionally throws a transient 401/5xx mid-batch (seen live:
|
||||||
|
# one 401 between a working bg job and a working trellis submit) -- retry
|
||||||
|
# with backoff before declaring an item dead
|
||||||
|
h = {"Authorization": "Bearer " + TOK}
|
||||||
|
h.update(headers or {})
|
||||||
|
last = None
|
||||||
|
for attempt in range(tries):
|
||||||
|
try:
|
||||||
|
req = urllib.request.Request(HOST + path, data=data, headers=h)
|
||||||
|
blob = urllib.request.urlopen(req, timeout=180).read()
|
||||||
|
if raw:
|
||||||
|
return blob
|
||||||
|
return json.loads(re.sub(r"[\x00-\x1f]", "", blob.decode("utf-8", "replace")))
|
||||||
|
except Exception as e:
|
||||||
|
last = e
|
||||||
|
time.sleep(4 * (attempt + 1))
|
||||||
|
raise last
|
||||||
|
|
||||||
|
|
||||||
|
def upload(path):
|
||||||
|
boundary = uuid.uuid4().hex
|
||||||
|
ctype = mimetypes.guess_type(path)[0] or "application/octet-stream"
|
||||||
|
body = (
|
||||||
|
f'--{boundary}\r\nContent-Disposition: form-data; name="file"; '
|
||||||
|
f'filename="{os.path.basename(path)}"\r\nContent-Type: {ctype}\r\n\r\n'
|
||||||
|
).encode() + open(path, "rb").read() + f"\r\n--{boundary}--\r\n".encode()
|
||||||
|
a = call("/api/assets", data=body,
|
||||||
|
headers={"Content-Type": f"multipart/form-data; boundary={boundary}"})
|
||||||
|
return a.get("id") or (a.get("items") or [a])[0].get("id")
|
||||||
|
|
||||||
|
|
||||||
|
def run_job(operator, asset_id, params, timeout_s):
|
||||||
|
j = call("/api/jobs", data=json.dumps(
|
||||||
|
{"operator": operator, "asset_id": asset_id, "params": params}).encode(),
|
||||||
|
headers={"Content-Type": "application/json"})
|
||||||
|
jid = j["id"]
|
||||||
|
t0 = time.time()
|
||||||
|
while time.time() - t0 < timeout_s:
|
||||||
|
time.sleep(10)
|
||||||
|
st = call("/api/jobs/%s" % jid)
|
||||||
|
if st.get("status") in ("done", "error", "cancelled"):
|
||||||
|
if st["status"] != "done":
|
||||||
|
raise RuntimeError("%s job %s: %s (%s)" % (
|
||||||
|
operator, jid, st["status"], str(st.get("error", ""))[:160]))
|
||||||
|
return jid
|
||||||
|
raise RuntimeError("%s job %s timed out after %ds" % (operator, jid, timeout_s))
|
||||||
|
|
||||||
|
|
||||||
|
def job_asset(jid, suffix=None):
|
||||||
|
# jobs don't back-link outputs: list assets, match parent_job (mb_recon contract)
|
||||||
|
a = call("/api/assets?limit=100")
|
||||||
|
items = a if isinstance(a, list) else a.get("items", [])
|
||||||
|
mine = [x for x in items if x.get("parent_job") == jid]
|
||||||
|
if suffix:
|
||||||
|
mine = [x for x in mine
|
||||||
|
if str(x.get("filename", x.get("name", ""))).endswith(suffix)]
|
||||||
|
if not mine:
|
||||||
|
raise RuntimeError("job %s produced no %s asset" % (jid, suffix or ""))
|
||||||
|
return mine[0]["id"]
|
||||||
|
|
||||||
|
|
||||||
|
MESH_OP = "trellis_mac"
|
||||||
|
MESH_PARAMS = {
|
||||||
|
# jerry cans made trellis_mac exit 2 on two different photos; hunyuan3d_mlx
|
||||||
|
# chewed the same cutout happily -- keep both dialled in
|
||||||
|
"trellis_mac": {"pipeline_type": "1024", "texture_size": 1024},
|
||||||
|
"hunyuan3d_mlx": {"texture_size": 1024},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def one(name, img, outdir):
|
||||||
|
try:
|
||||||
|
aid = upload(img)
|
||||||
|
print("UPLOADED %s -> %s" % (name, aid), flush=True)
|
||||||
|
bj = run_job("bg_remove_local", aid, {"resolution": 1024}, 600)
|
||||||
|
cut = job_asset(bj)
|
||||||
|
print("CUTOUT %s" % name, flush=True)
|
||||||
|
tj = run_job(MESH_OP, cut, MESH_PARAMS.get(MESH_OP, {}), 3600)
|
||||||
|
gid = job_asset(tj, ".glb")
|
||||||
|
out = os.path.join(outdir, name + ".glb")
|
||||||
|
open(out, "wb").write(call("/api/assets/%s/file" % gid, raw=True))
|
||||||
|
print("DONE %s (%dKB)" % (name, os.path.getsize(out) // 1024), flush=True)
|
||||||
|
except Exception as e:
|
||||||
|
print("FAIL %s %s" % (name, str(e)[:200]), flush=True)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
args = sys.argv[1:]
|
||||||
|
outdir = "assets/tools"
|
||||||
|
workers = 2
|
||||||
|
if "--out" in args:
|
||||||
|
i = args.index("--out")
|
||||||
|
outdir = args[i + 1]
|
||||||
|
del args[i:i + 2]
|
||||||
|
if "--workers" in args:
|
||||||
|
i = args.index("--workers")
|
||||||
|
workers = int(args[i + 1])
|
||||||
|
del args[i:i + 2]
|
||||||
|
if "--operator" in args:
|
||||||
|
i = args.index("--operator")
|
||||||
|
global MESH_OP
|
||||||
|
MESH_OP = args[i + 1]
|
||||||
|
del args[i:i + 2]
|
||||||
|
os.makedirs(outdir, exist_ok=True)
|
||||||
|
queue = [a.split("=", 1) for a in args if "=" in a]
|
||||||
|
lock = threading.Lock()
|
||||||
|
|
||||||
|
def worker():
|
||||||
|
while True:
|
||||||
|
with lock:
|
||||||
|
if not queue:
|
||||||
|
return
|
||||||
|
name, img = queue.pop(0)
|
||||||
|
one(name, img, outdir)
|
||||||
|
|
||||||
|
threads = [threading.Thread(target=worker) for _ in range(workers)]
|
||||||
|
for t in threads:
|
||||||
|
t.start()
|
||||||
|
for t in threads:
|
||||||
|
t.join()
|
||||||
|
print("BATCH_COMPLETE", flush=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
75
tools/slim_glb.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
"""Slim TRELLIS GLBs to prop grade, in place.
|
||||||
|
|
||||||
|
/Applications/Blender.app/Contents/MacOS/Blender -b -P tools/slim_glb.py -- <dir> [max_tris] [tex_px]
|
||||||
|
|
||||||
|
TRELLIS ships ~200k-face meshes with PNG textures -- 20MB+ per prop, which is
|
||||||
|
lovely and also insane for background clutter. Per GLB: decimate every mesh
|
||||||
|
down to max_tris (default 18k), scale every image to tex_px (default 1024),
|
||||||
|
re-export with JPEG textures. Typical result is a 10x size drop with no
|
||||||
|
visible cost at prop distance. Prints "SLIM name before->after KB" per file.
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import bpy
|
||||||
|
|
||||||
|
argv = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
|
||||||
|
DIR = argv[0] if argv else "assets/tools"
|
||||||
|
MAX_TRIS = int(argv[1]) if len(argv) > 1 else 18000
|
||||||
|
TEX = int(argv[2]) if len(argv) > 2 else 1024
|
||||||
|
|
||||||
|
|
||||||
|
def reset():
|
||||||
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
||||||
|
|
||||||
|
|
||||||
|
def tri_count(obj):
|
||||||
|
m = obj.evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh()
|
||||||
|
n = len(m.loop_triangles)
|
||||||
|
obj.evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh_clear()
|
||||||
|
return n
|
||||||
|
|
||||||
|
|
||||||
|
def slim(path):
|
||||||
|
reset()
|
||||||
|
before = os.path.getsize(path) // 1024
|
||||||
|
bpy.ops.import_scene.gltf(filepath=path)
|
||||||
|
meshes = [o for o in bpy.data.objects if o.type == "MESH"]
|
||||||
|
total = 0
|
||||||
|
for o in meshes:
|
||||||
|
o.data.calc_loop_triangles()
|
||||||
|
total += len(o.data.loop_triangles)
|
||||||
|
if total > MAX_TRIS:
|
||||||
|
ratio = MAX_TRIS / float(total)
|
||||||
|
for o in meshes:
|
||||||
|
bpy.context.view_layer.objects.active = o
|
||||||
|
mod = o.modifiers.new("slim", "DECIMATE")
|
||||||
|
mod.ratio = ratio
|
||||||
|
bpy.ops.object.modifier_apply(modifier=mod.name)
|
||||||
|
for img in bpy.data.images:
|
||||||
|
if img.size[0] > TEX or img.size[1] > TEX:
|
||||||
|
img.scale(min(img.size[0], TEX), min(img.size[1], TEX))
|
||||||
|
kwargs = {
|
||||||
|
"filepath": path,
|
||||||
|
"export_format": "GLB",
|
||||||
|
"export_image_format": "JPEG",
|
||||||
|
"export_yup": True,
|
||||||
|
}
|
||||||
|
# quality kwarg name moved between Blender versions; feed whichever exists
|
||||||
|
props = bpy.ops.export_scene.gltf.get_rna_type().properties.keys()
|
||||||
|
for k in ("export_jpeg_quality", "export_image_quality"):
|
||||||
|
if k in props:
|
||||||
|
kwargs[k] = 80
|
||||||
|
bpy.ops.export_scene.gltf(**kwargs)
|
||||||
|
print("SLIM %s %d->%dKB (%d tris)" % (
|
||||||
|
os.path.basename(path), before, os.path.getsize(path) // 1024,
|
||||||
|
min(total, MAX_TRIS)), flush=True)
|
||||||
|
|
||||||
|
|
||||||
|
for f in sorted(os.listdir(DIR)):
|
||||||
|
if f.endswith(".glb"):
|
||||||
|
try:
|
||||||
|
slim(os.path.join(DIR, f))
|
||||||
|
except Exception as e: # keep the batch alive; one dud mustn't kill it
|
||||||
|
print("SLIM_FAIL %s %s" % (f, str(e)[:160]), flush=True)
|
||||||
|
print("SLIM_COMPLETE", flush=True)
|
||||||