## The field down the y axis through the sphere's poles, straight out of the
## ProcVolume grid.
extends SceneTree
func _init() -> void:
var g := ProcNodeGraph.new()
var s := g.add_node(MeshUVSphereNode.new())
g.get_node(s).set_input_default(2, 1.0)
var tg := g.add_node(MeshToSDFGridNode.new())
g.get_node(tg).set_input_default(1, 0.25)
g.connect_sockets(s, 0, tg, 0)
var vol = g.evaluate_socket(tg, 0).get_volume()
var d: PackedFloat32Array = vol.get_density_grid()
var r: Vector3i = vol.get_grid_resolution()
var o: Vector3 = vol.get_grid_origin()
var xi := 7
var zi := 7
print("column x=%.3f z=%.3f (positive = solid)" % [o.x + xi*0.25, o.z + zi*0.25])
for y in range(r.y):
var wy := o.y + y * 0.25
var v := d[(y*r.y + 0)*0 + (y*r.x*0)] # placeholder
v = d[(y*r.y + 0)*0 + ((y*r.y + 0)*0)]
v = d[(y * r.y + y) * 0 + 0]
v = d[(zi * r.y + y) * r.x + xi]
print(" y=%6.3f %8.4f expected %8.4f" % [wy, v, 1.0 - Vector3(o.x+xi*0.25, wy, o.z+zi*0.25).length()])
quit(0)