new method of creating preview

This commit is contained in:
Nikolai Fesenko
2025-08-15 20:35:27 +02:00
parent 3b540e019b
commit 5c71f036af
5 changed files with 45 additions and 62 deletions

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=14 format=3 uid="uid://0t0cvsitlfmm"] [gd_scene load_steps=11 format=3 uid="uid://0t0cvsitlfmm"]
[ext_resource type="Script" uid="uid://c61rr6to3q566" path="res://Scripts/build_object.gd" id="1_nn5da"] [ext_resource type="Script" uid="uid://c61rr6to3q566" path="res://Scripts/build_object.gd" id="1_nn5da"]
[ext_resource type="ArrayMesh" uid="uid://cahq2fdeqqwhx" path="res://Blends/Mobel/DoubleBeds.obj" id="2_8ssp7"] [ext_resource type="ArrayMesh" uid="uid://cahq2fdeqqwhx" path="res://Blends/Mobel/DoubleBeds.obj" id="2_8ssp7"]
@@ -10,20 +10,7 @@
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dn7et"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_dn7et"]
render_priority = 0 render_priority = 0
shader = ExtResource("3_pdq8c") shader = ExtResource("3_pdq8c")
shader_parameter/alpha = 0.5 shader_parameter/color = Vector3(0, 0, 0)
shader_parameter/color = Vector3(0, 1, 0)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sp2kd"]
render_priority = 0
shader = ExtResource("3_pdq8c")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(0, 1, 0)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_c1046"]
render_priority = 0
shader = ExtResource("3_pdq8c")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(0, 1, 0)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c1046"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c1046"]
albedo_texture = ExtResource("3_nn5da") albedo_texture = ExtResource("3_nn5da")
@@ -35,26 +22,10 @@ albedo_texture = ExtResource("5_sp2kd")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tma46"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tma46"]
albedo_texture = ExtResource("5_sp2kd") albedo_texture = ExtResource("5_sp2kd")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_k1k40"] [node name="DoubleBeds" type="Node3D" node_paths=PackedStringArray("meshInstance")]
render_priority = 0
shader = ExtResource("3_pdq8c")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(1, 0, 0)
[node name="DoubleBeds" type="Node3D" node_paths=PackedStringArray("meshInstance", "greenMeshInstance", "RedMeshInstance")]
script = ExtResource("1_nn5da") script = ExtResource("1_nn5da")
meshInstance = NodePath("DoubleBeds") meshInstance = NodePath("DoubleBeds")
greenMeshInstance = NodePath("Green_preview") preview_shader = SubResource("ShaderMaterial_dn7et")
RedMeshInstance = NodePath("Red_preview")
[node name="Green_preview" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0)
visible = false
mesh = ExtResource("2_8ssp7")
skeleton = NodePath("../DoubleBeds")
surface_material_override/0 = SubResource("ShaderMaterial_dn7et")
surface_material_override/1 = SubResource("ShaderMaterial_sp2kd")
surface_material_override/2 = SubResource("ShaderMaterial_c1046")
[node name="DoubleBeds" type="MeshInstance3D" parent="."] [node name="DoubleBeds" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, -0.42751, 0) transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, -0.42751, 0)
@@ -62,11 +33,3 @@ mesh = ExtResource("2_8ssp7")
surface_material_override/0 = SubResource("StandardMaterial3D_c1046") surface_material_override/0 = SubResource("StandardMaterial3D_c1046")
surface_material_override/1 = SubResource("StandardMaterial3D_k1k40") surface_material_override/1 = SubResource("StandardMaterial3D_k1k40")
surface_material_override/2 = SubResource("StandardMaterial3D_tma46") surface_material_override/2 = SubResource("StandardMaterial3D_tma46")
[node name="Red_preview" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0)
visible = false
mesh = ExtResource("2_8ssp7")
surface_material_override/0 = SubResource("ShaderMaterial_k1k40")
surface_material_override/1 = SubResource("ShaderMaterial_k1k40")
surface_material_override/2 = SubResource("ShaderMaterial_k1k40")

View File

@@ -1,13 +1,20 @@
[gd_scene load_steps=11 format=3 uid="uid://bcme5mx8nf5kf"] [gd_scene load_steps=14 format=3 uid="uid://bcme5mx8nf5kf"]
[ext_resource type="Script" uid="uid://c61rr6to3q566" path="res://Scripts/build_object.gd" id="1_c5d30"]
[ext_resource type="ArrayMesh" uid="uid://dqs5joeucls8u" path="res://Blends/Pot/pot.obj" id="1_ps8qt"] [ext_resource type="ArrayMesh" uid="uid://dqs5joeucls8u" path="res://Blends/Pot/pot.obj" id="1_ps8qt"]
[ext_resource type="Texture2D" uid="uid://c4cvsuxeqt068" path="res://Blends/Pot/pot_metal.jpg" id="2_c5d30"] [ext_resource type="Texture2D" uid="uid://c4cvsuxeqt068" path="res://Blends/Pot/pot_metal.jpg" id="2_c5d30"]
[ext_resource type="Shader" uid="uid://bfv6ckihralab" path="res://Shaders/build_transparent.gdshader" id="2_ocdig"]
[ext_resource type="Texture2D" uid="uid://fom8shxpn476" path="res://Blends/Pot/pot_brick.jpg" id="3_ocdig"] [ext_resource type="Texture2D" uid="uid://fom8shxpn476" path="res://Blends/Pot/pot_brick.jpg" id="3_ocdig"]
[ext_resource type="Texture2D" uid="uid://bw8k6hmfrwj60" path="res://Blends/Pot/rougness_m.png" id="4_vv7mx"] [ext_resource type="Texture2D" uid="uid://bw8k6hmfrwj60" path="res://Blends/Pot/rougness_m.png" id="4_vv7mx"]
[ext_resource type="Texture2D" uid="uid://cdb7b2ef31ixv" path="res://Blends/Pot/pot_wood.jpg" id="5_gtq0i"] [ext_resource type="Texture2D" uid="uid://cdb7b2ef31ixv" path="res://Blends/Pot/pot_wood.jpg" id="5_gtq0i"]
[ext_resource type="Texture2D" uid="uid://bxgm6oovlxdjq" path="res://Blends/Pot/wood_n.png" id="6_r71lq"] [ext_resource type="Texture2D" uid="uid://bxgm6oovlxdjq" path="res://Blends/Pot/wood_n.png" id="6_r71lq"]
[ext_resource type="Texture2D" uid="uid://run700pxmcyc" path="res://Blends/Pot/brick_t.png" id="7_e7ek7"] [ext_resource type="Texture2D" uid="uid://run700pxmcyc" path="res://Blends/Pot/brick_t.png" id="7_e7ek7"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vv7mx"]
render_priority = 0
shader = ExtResource("2_ocdig")
shader_parameter/color = Vector3(0, 0, 0)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dn6sd"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dn6sd"]
albedo_texture = ExtResource("2_c5d30") albedo_texture = ExtResource("2_c5d30")
roughness = 0.4 roughness = 0.4
@@ -24,8 +31,11 @@ normal_texture = ExtResource("6_r71lq")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rbvpf"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rbvpf"]
albedo_texture = ExtResource("7_e7ek7") albedo_texture = ExtResource("7_e7ek7")
[node name="Pot" type="Node3D"] [node name="Pot" type="Node3D" node_paths=PackedStringArray("meshInstance")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
script = ExtResource("1_c5d30")
meshInstance = NodePath("Pot")
preview_shader = SubResource("ShaderMaterial_vv7mx")
[node name="Pot" type="MeshInstance3D" parent="."] [node name="Pot" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.41814, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.41814, 0)

View File

@@ -28,7 +28,6 @@ size = Vector3(5.40002, 3.46348, 2.28394)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_u7bw1"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_u7bw1"]
render_priority = 0 render_priority = 0
shader = ExtResource("6_ru0md") shader = ExtResource("6_ru0md")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(0, 0, 0) shader_parameter/color = Vector3(0, 0, 0)
[node name="Cart" type="Node3D" node_paths=PackedStringArray("cartTop")] [node name="Cart" type="Node3D" node_paths=PackedStringArray("cartTop")]

View File

@@ -2,36 +2,47 @@ extends Node3D
@export var meshInstance: MeshInstance3D @export var meshInstance: MeshInstance3D
@export var greenMeshInstance: MeshInstance3D @export var preview_shader: ShaderMaterial
@export var RedMeshInstance: MeshInstance3D
var default_shaders: Array
func _ready() -> void: func _ready() -> void:
Global.preview_created.connect(_on_preview_create) Global.preview_created.connect(_on_preview_create)
Global.object_placed.connect(_on_object_placed) Global.object_placed.connect(_on_object_placed)
set_default_shaders()
func set_default_shaders():
var amount_shaders = meshInstance.get_surface_override_material_count()
default_shaders.resize( amount_shaders)
for i in amount_shaders:
default_shaders[i] = meshInstance.get_surface_override_material(i)
func restore_default_shaders():
for i in meshInstance.get_surface_override_material_count():
meshInstance.set_surface_override_material(i,default_shaders[i])
pass
func set_preview_shader_color():
if true:
set_green_color()
for i in meshInstance.get_surface_override_material_count():
meshInstance.set_surface_override_material(i,preview_shader)
pass
func set_green_color(): func set_green_color():
hide_mainMesh() preview_shader.set_shader_parameter("color", Vector3(0,1.0,0))
greenMeshInstance.visible = true
func set_red_color(): func set_red_color():
hide_mainMesh() preview_shader.set_shader_parameter("color", Vector3(1.0,0,0))
RedMeshInstance.visible = true pass
func hide_mainMesh():
meshInstance.visible = false
func show_mainMesh():
meshInstance.visible = true
greenMeshInstance.visible = false
RedMeshInstance.visible = false
func _on_preview_create(): func _on_preview_create():
set_green_color() set_preview_shader_color()
func _on_object_placed(): func _on_object_placed():
show_mainMesh() restore_default_shaders()
greenMeshInstance.queue_free()
RedMeshInstance.queue_free()

View File

@@ -1,5 +1,5 @@
shader_type spatial; shader_type spatial;
uniform float alpha; //uniform float alpha;
uniform vec3 color; uniform vec3 color;
void vertex() { void vertex() {
@@ -8,7 +8,7 @@ void vertex() {
void fragment() { void fragment() {
ALBEDO = color; ALBEDO = color;
ALPHA = alpha; ALPHA = 0.5;
} }
//void light() { //void light() {