domingo, 6 de octubre de 2024

Ejemplo de hacer una animación con blender y pasarla a Godot 4.3,;

 

Boy a explicar un ejemplo de hacer una animación con blender y pasarla a Godot 4.3,

he puesto un video mio también en el blog con mi voz para explicar de forma breve como lo voy haciendo, en blender primero de todo, ago un hueso el cual extruyo, o mas bien partiendo de el, ago otro que esta unido a el, y así sucesivamente se pueden dar formas que se quieran dar, un brazo en este caso, con unos dedos, cada hueso lo embuelbo con un cilindro que voy modelando, estos mas adelante se pueden unir o si se sabe muy bien utilizar blender a partir de la base de uno solo seleccionado las caras y con mucho trabajo y paciencia y dandole formas de brazo antebrazo mano y dedos.


En el video se puede ver también como selecciono los cilindros y los huesos y los fusiono para que cuando se aga la animación, el cilindro siga el movimiento del hueso……



Cuando e conseguido lo que buscaba lo pase a Godot4.3 en formato fbx, si usáis Godot 4.2 mejor usáis formato glTF.



Pongo también un video en el que se ve mejor los pasos de fusionas formas con huesos en blender.






El archivo fbx que contiene, que pase a Godot 4.3 tiene un script para que aga la animación, es el siguiente,,,,,,,



extends Node3D



# Called when the node enters the scene tree for the first time.

func _ready() -> void:

$AnimationPlayer.play("Esqueleto|MANOSADICA")

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

pass







Es muy sencillo de hacer, de escribir y un detalle es que la animación antes de pasarla a escena para que funcione con godot le marquéis la opción de PingPong para que se reproduzca continuamente en bucle y que estén también marcadas de azul las dos flechillas que recuerdan el símbolo del ying y del yang, esto en animación del Godot4.3 lo seleccionáis hay,,,, podría alargar mas estas explicaciones, pero es solo una pequeña vase para entender como funciona el tema, el resto a de ser ponerse delante del pc y practicar y practicar y practicar……...



jueves, 3 de octubre de 2024

Interesante script GDScript, para hacer un circuito cerrado por el que un objeto se mueve continuamente;

 extends PathFollow3D


var speedd =0.07

# Called when the node enters the scene tree for the first time.

func _ready() -> void:

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

progress_ratio +=delta *speedd

pass



------------------------------------------------------------------------------------------------------------------

EXPLICACION: ago una silla que se mueve sola en una habitacion, utilizo los nodos de padre Path3D de hijo PathFollow3D de nieto un tscn una escena de una silla o un obj, el script lo contiene el nodo PathFollow3D y con este script la silla va moviéndose sola por el escenario......este tema es novedoso para mi lo acabo de probar ahora y me funciona ya iré profundizando mas en el tema.....lo vi en un video de YouTube, lo del tema PathFollow3D y bueno e de practicar y practicar a la primera funciona pero sale diferente de lo que se busca.......



viernes, 27 de septiembre de 2024

Con GDScript para Godot 4.3 ago que un texto vibre tipo Label3D;

 extends Label3D


var strength = 0.009 # Intensidad del temblor

var speed = 0.009     # Velocidad del temblor


func _process(delta):

# Calculamos una pequeña variación aleatoria en las coordenadas X e Y

var random_x = randf_range(-strength, strength)

var random_y = randf_range(-strength, strength)


# Aplicamos la variación al nodo

global_position += Vector3(random_x, random_y, 0.0)

domingo, 15 de septiembre de 2024

Borrar particulas alos pocos segundos para no saturar la memoria en Godot 4.3;

 extends CPUParticles3D

var tiempo_transcurrido = 0.0


# Called when the node enters the scene tree for the first time.

func _ready() -> void:

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

rotate_y(0.8)

tiempo_transcurrido += delta


if tiempo_transcurrido >= 11.0:

queue_free()  # Elimina el nodo de la escena