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:
Binary file not shown.
@@ -304,21 +304,33 @@ func _gen_water_buffalo_hat() -> void:
|
|||||||
var root := Node3D.new()
|
var root := Node3D.new()
|
||||||
root.name = "AttachmentRoot"
|
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()
|
var cap_mat := StandardMaterial3D.new()
|
||||||
cap_mat.albedo_color = Color(0.13, 0.20, 0.58) # Flintstones Water Buffalo blue
|
cap_mat.albedo_color = Color(0.13, 0.20, 0.58) # Flintstones Water Buffalo blue
|
||||||
cap_mat.roughness = 0.95
|
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
|
cap.material_override = cap_mat
|
||||||
root.add_child(cap)
|
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
|
# 2. Fur Brim / Rim at bottom edge of cap
|
||||||
var brim := MeshInstance3D.new()
|
var brim := MeshInstance3D.new()
|
||||||
brim.name = "FurBrim"
|
brim.name = "FurBrim"
|
||||||
@@ -339,7 +351,7 @@ func _gen_water_buffalo_hat() -> void:
|
|||||||
var medal_mesh := BoxMesh.new()
|
var medal_mesh := BoxMesh.new()
|
||||||
medal_mesh.size = Vector3(0.12, 0.10, 0.04)
|
medal_mesh.size = Vector3(0.12, 0.10, 0.04)
|
||||||
medal.mesh = medal_mesh
|
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()
|
var medal_mat := StandardMaterial3D.new()
|
||||||
medal_mat.albedo_color = Color(0.96, 0.82, 0.18) # Gold lodge crest
|
medal_mat.albedo_color = Color(0.96, 0.82, 0.18) # Gold lodge crest
|
||||||
medal_mat.metallic = 0.7
|
medal_mat.metallic = 0.7
|
||||||
@@ -347,55 +359,42 @@ func _gen_water_buffalo_hat() -> void:
|
|||||||
medal.material_override = medal_mat
|
medal.material_override = medal_mat
|
||||||
root.add_child(medal)
|
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()
|
var horn_mat := StandardMaterial3D.new()
|
||||||
horn_mat.albedo_color = Color(0.92, 0.89, 0.82) # Bone/ivory
|
horn_mat.albedo_color = Color(0.93, 0.90, 0.82) # Bone/ivory white
|
||||||
horn_mat.roughness = 0.5
|
horn_mat.roughness = 0.45
|
||||||
|
|
||||||
var tip_mat := StandardMaterial3D.new()
|
var tip_mat := StandardMaterial3D.new()
|
||||||
tip_mat.albedo_color = Color(0.20, 0.17, 0.14) # Dark horn tip
|
tip_mat.albedo_color = Color(0.28, 0.18, 0.12) # Buffalo horn brown
|
||||||
tip_mat.roughness = 0.6
|
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]:
|
for side in [-1.0, 1.0]:
|
||||||
var side_name := "Right" if side < 0.0 else "Left"
|
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()
|
var h_base := MeshInstance3D.new()
|
||||||
h_base.name = "Horn_%s_Base" % side_name
|
h_base.name = "Horn_%s_Base" % side_name
|
||||||
var base_mesh := CylinderMesh.new()
|
var base_mesh := CylinderMesh.new()
|
||||||
base_mesh.bottom_radius = 0.08
|
base_mesh.bottom_radius = 0.08
|
||||||
base_mesh.top_radius = 0.065
|
base_mesh.top_radius = 0.055
|
||||||
base_mesh.height = 0.20
|
base_mesh.height = 0.17
|
||||||
h_base.mesh = base_mesh
|
h_base.mesh = base_mesh
|
||||||
h_base.position = Vector3(side * 0.36, 0.12, 0.02)
|
h_base.position = Vector3(side * 0.34, 0.18, 0.01)
|
||||||
h_base.rotation_degrees = Vector3(10.0, side * -15.0, side * -70.0)
|
h_base.rotation_degrees = Vector3(5.0, side * -10.0, side * -60.0)
|
||||||
h_base.material_override = horn_mat
|
h_base.material_override = horn_mat
|
||||||
root.add_child(h_base)
|
root.add_child(h_base)
|
||||||
|
|
||||||
# Mid segment (sweeping upward and outward)
|
# Second part: brown tip segment curving upward (middle piece removed)
|
||||||
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)
|
|
||||||
var h_tip := MeshInstance3D.new()
|
var h_tip := MeshInstance3D.new()
|
||||||
h_tip.name = "Horn_%s_Tip" % side_name
|
h_tip.name = "Horn_%s_Tip" % side_name
|
||||||
var tip_mesh := CylinderMesh.new()
|
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.top_radius = 0.005
|
||||||
tip_mesh.height = 0.18
|
tip_mesh.height = 0.15
|
||||||
h_tip.mesh = tip_mesh
|
h_tip.mesh = tip_mesh
|
||||||
h_tip.position = Vector3(side * 0.56, 0.40, -0.04)
|
h_tip.position = Vector3(side * 0.46, 0.28, -0.01)
|
||||||
h_tip.rotation_degrees = Vector3(20.0, 0.0, side * 20.0)
|
h_tip.rotation_degrees = Vector3(12.0, 0.0, side * 10.0)
|
||||||
h_tip.material_override = tip_mat
|
h_tip.material_override = tip_mat
|
||||||
root.add_child(h_tip)
|
root.add_child(h_tip)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user