style: Make water buffalo hat taller with rounded dome top, and shorten horns to white base and brown tip
checkpoint / checkpoint (push) Successful in 6m21s
checkpoint / checkpoint (push) Successful in 6m21s
This commit is contained in:
@@ -304,21 +304,33 @@ func _gen_water_buffalo_hat() -> void:
|
||||
var root := Node3D.new()
|
||||
root.name = "AttachmentRoot"
|
||||
|
||||
# 1. Hat Cap (royal blue felt lodge hat, sitting on head crown)
|
||||
var cap := MeshInstance3D.new()
|
||||
cap.name = "HatCap"
|
||||
var cap_mesh := CylinderMesh.new()
|
||||
cap_mesh.top_radius = 0.28
|
||||
cap_mesh.bottom_radius = 0.32
|
||||
cap_mesh.height = 0.26
|
||||
cap.mesh = cap_mesh
|
||||
cap.position = Vector3(0.0, 0.12, 0.0)
|
||||
var cap_mat := StandardMaterial3D.new()
|
||||
cap_mat.albedo_color = Color(0.13, 0.20, 0.58) # Flintstones Water Buffalo blue
|
||||
cap_mat.roughness = 0.95
|
||||
|
||||
# 1. Hat Cap Base (taller cylindrical body)
|
||||
var cap := MeshInstance3D.new()
|
||||
cap.name = "HatCap"
|
||||
var cap_mesh := CylinderMesh.new()
|
||||
cap_mesh.top_radius = 0.30
|
||||
cap_mesh.bottom_radius = 0.32
|
||||
cap_mesh.height = 0.30
|
||||
cap.mesh = cap_mesh
|
||||
cap.position = Vector3(0.0, 0.15, 0.0)
|
||||
cap.material_override = cap_mat
|
||||
root.add_child(cap)
|
||||
|
||||
# 1b. Rounded Dome Top (makes the hat taller and rounded, less flat)
|
||||
var dome := MeshInstance3D.new()
|
||||
dome.name = "HatDome"
|
||||
var dome_mesh := SphereMesh.new()
|
||||
dome_mesh.radius = 0.30
|
||||
dome_mesh.height = 0.28
|
||||
dome.mesh = dome_mesh
|
||||
dome.position = Vector3(0.0, 0.26, 0.0)
|
||||
dome.material_override = cap_mat
|
||||
root.add_child(dome)
|
||||
|
||||
# 2. Fur Brim / Rim at bottom edge of cap
|
||||
var brim := MeshInstance3D.new()
|
||||
brim.name = "FurBrim"
|
||||
@@ -339,7 +351,7 @@ func _gen_water_buffalo_hat() -> void:
|
||||
var medal_mesh := BoxMesh.new()
|
||||
medal_mesh.size = Vector3(0.12, 0.10, 0.04)
|
||||
medal.mesh = medal_mesh
|
||||
medal.position = Vector3(0.0, 0.12, -0.32)
|
||||
medal.position = Vector3(0.0, 0.16, -0.32)
|
||||
var medal_mat := StandardMaterial3D.new()
|
||||
medal_mat.albedo_color = Color(0.96, 0.82, 0.18) # Gold lodge crest
|
||||
medal_mat.metallic = 0.7
|
||||
@@ -347,55 +359,42 @@ func _gen_water_buffalo_hat() -> void:
|
||||
medal.material_override = medal_mat
|
||||
root.add_child(medal)
|
||||
|
||||
# Horn material: ivory/bone
|
||||
# Horn material: first part is ivory/white, tip is brown (no middle piece)
|
||||
var horn_mat := StandardMaterial3D.new()
|
||||
horn_mat.albedo_color = Color(0.92, 0.89, 0.82) # Bone/ivory
|
||||
horn_mat.roughness = 0.5
|
||||
horn_mat.albedo_color = Color(0.93, 0.90, 0.82) # Bone/ivory white
|
||||
horn_mat.roughness = 0.45
|
||||
|
||||
var tip_mat := StandardMaterial3D.new()
|
||||
tip_mat.albedo_color = Color(0.20, 0.17, 0.14) # Dark horn tip
|
||||
tip_mat.roughness = 0.6
|
||||
tip_mat.albedo_color = Color(0.28, 0.18, 0.12) # Buffalo horn brown
|
||||
tip_mat.roughness = 0.55
|
||||
|
||||
# 4. Sweeping Curved Water Buffalo Horns (curving outward and up)
|
||||
# 4. Short Water Buffalo Horns: white base + brown tip only
|
||||
for side in [-1.0, 1.0]:
|
||||
var side_name := "Right" if side < 0.0 else "Left"
|
||||
|
||||
# Base segment (projecting horizontally outwards from side of hat)
|
||||
# First part: white base segment projecting outward from side of hat
|
||||
var h_base := MeshInstance3D.new()
|
||||
h_base.name = "Horn_%s_Base" % side_name
|
||||
var base_mesh := CylinderMesh.new()
|
||||
base_mesh.bottom_radius = 0.08
|
||||
base_mesh.top_radius = 0.065
|
||||
base_mesh.height = 0.20
|
||||
base_mesh.top_radius = 0.055
|
||||
base_mesh.height = 0.17
|
||||
h_base.mesh = base_mesh
|
||||
h_base.position = Vector3(side * 0.36, 0.12, 0.02)
|
||||
h_base.rotation_degrees = Vector3(10.0, side * -15.0, side * -70.0)
|
||||
h_base.position = Vector3(side * 0.34, 0.18, 0.01)
|
||||
h_base.rotation_degrees = Vector3(5.0, side * -10.0, side * -60.0)
|
||||
h_base.material_override = horn_mat
|
||||
root.add_child(h_base)
|
||||
|
||||
# Mid segment (sweeping upward and outward)
|
||||
var h_mid := MeshInstance3D.new()
|
||||
h_mid.name = "Horn_%s_Mid" % side_name
|
||||
var mid_mesh := CylinderMesh.new()
|
||||
mid_mesh.bottom_radius = 0.065
|
||||
mid_mesh.top_radius = 0.045
|
||||
mid_mesh.height = 0.22
|
||||
h_mid.mesh = mid_mesh
|
||||
h_mid.position = Vector3(side * 0.52, 0.24, 0.0)
|
||||
h_mid.rotation_degrees = Vector3(15.0, side * -10.0, side * -25.0)
|
||||
h_mid.material_override = horn_mat
|
||||
root.add_child(h_mid)
|
||||
|
||||
# Tip segment (curving upward and inward to sharp tip)
|
||||
# Second part: brown tip segment curving upward (middle piece removed)
|
||||
var h_tip := MeshInstance3D.new()
|
||||
h_tip.name = "Horn_%s_Tip" % side_name
|
||||
var tip_mesh := CylinderMesh.new()
|
||||
tip_mesh.bottom_radius = 0.045
|
||||
tip_mesh.bottom_radius = 0.055
|
||||
tip_mesh.top_radius = 0.005
|
||||
tip_mesh.height = 0.18
|
||||
tip_mesh.height = 0.15
|
||||
h_tip.mesh = tip_mesh
|
||||
h_tip.position = Vector3(side * 0.56, 0.40, -0.04)
|
||||
h_tip.rotation_degrees = Vector3(20.0, 0.0, side * 20.0)
|
||||
h_tip.position = Vector3(side * 0.46, 0.28, -0.01)
|
||||
h_tip.rotation_degrees = Vector3(12.0, 0.0, side * 10.0)
|
||||
h_tip.material_override = tip_mat
|
||||
root.add_child(h_tip)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user