Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions examples/test-command-file-cycle-read.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import gsp
from gsp.matplotlib import core, visual, glm
import numpy as np

# ###########################################
# # Build a scene

# canvas = core.Canvas(512, 512, 100.0)
# viewport = core.Viewport(canvas, 0, 0, 512, 512, [1,1,1,1])
# n = 200
# P = glm.to_vec3(np.random.uniform(-1, +1, (n,2)), dtype=np.float32)

# # buffer_count = n
# # buffer_dtype = P.dtype
# # buffer_data = P.data
# # positions = core.Buffer(buffer_count, buffer_dtype, buffer_data)
# pixels = visual.Pixels(positions=P, colors=[0,0,0,1])
# pixels.render(viewport)

# ##########################################
# # Save a command file

commands_filename = "test-command-file-cycle-read.command.json"

# gsp.save(filename=commands_filename)



##########################################
# Now reset everything and reload from command file, then run the queue
#

# reset objects
gsp.Object.objects = {}

# load commands from file into a command queue
command_queue = gsp.io.json.load(commands_filename)

# KEY: REQUIRED FOR THE GLOBALS
gsp.use("matplotlib")

# Actually run the command queue
command_queue.run(globals(), locals())

##########################################
# Finally display the result via matplotlib

import matplotlib.pyplot as plt
plt.show(block=True)
1 change: 1 addition & 0 deletions examples/test-command-file-cycle.command.json

Large diffs are not rendered by default.

46 changes: 46 additions & 0 deletions examples/test-command-file-cycle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import gsp
from gsp.matplotlib import core, visual, glm
import numpy as np

###########################################
# Build a scene

canvas = core.Canvas(512, 512, 100.0)
viewport = core.Viewport(canvas, 0, 0, 512, 512, [1,1,1,1])
n = 2000
P = glm.to_vec3(np.random.uniform(-1, +1, (n,2)), dtype=np.float32)

# buffer_count = n
# buffer_dtype = P.dtype
# buffer_data = P.data
# positions = core.Buffer(buffer_count, buffer_dtype, buffer_data)
pixels = visual.Pixels(positions=P, colors=[0,0,0,1])
pixels.render(viewport)

##########################################
# Save a command file

commands_filename = "test-command-file-cycle.command.json"
gsp.save(filename=commands_filename)

##########################################
# Now reset everything and reload from command file, then run the queue
#

# reset objects
gsp.Object.objects = {}

# load commands from file into a command queue
command_queue = gsp.io.json.load(commands_filename)

# KEY: REQUIRED FOR THE GLOBALS
gsp.use("matplotlib")

# Actually run the command queue
command_queue.run(globals(), locals())

##########################################
# Finally display the result via matplotlib

import matplotlib.pyplot as plt
plt.show(block=True)
4 changes: 3 additions & 1 deletion gsp/matplotlib/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ def ndarray_to_Buffer(obj):
# In the current implementation, Buffer is created each time
# this convertes is called such that if the obj has been
# mofidied, it shoudl be ok
Z = glm.ndarray.tracked(obj)

# Z = glm.ndarray.tracked(obj)
Z = obj.view(glm.ndarray.tracked)
return Z._tracker.gsp_buffer

@register("tracked", "Buffer")
Expand Down
6 changes: 6 additions & 0 deletions gsp/matplotlib/visual/pixels.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ class Pixels(visual.Pixels):
@command("visual.Pixels")
def __init__(self, positions : Transform | Buffer,
colors : Transform | Buffer | Color):
if isinstance(positions, Buffer):
positions = np.asarray(positions).reshape(-1,3)
if isinstance(colors, Buffer):
colors = np.asarray(colors).reshape(-1,4)

# positions = glm.to_vec3(positions)
super().__init__(positions, colors, __no_command__ = True)


Expand Down
73 changes: 73 additions & 0 deletions test-command-file-cycle-read.command.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
{
"jsonrpc": "2.0",
"commands": [
{
"method": "core.Canvas",
"id": 1,
"timestamp": 1758185663.772275,
"parameters": {
"id": 1,
"width": 512,
"height": 512,
"dpi": 100.0
}
},
{
"method": "core.Viewport",
"id": 2,
"timestamp": 1758185663.91999,
"parameters": {
"id": 2,
"canvas(id)": 1,
"x": 0,
"y": 0,
"width": 512,
"height": 512,
"color": [
1,
1,
1,
1
]
}
},
{
"method": "core.Buffer",
"id": 3,
"timestamp": 1758185668.088774,
"parameters": {
"id": 3,
"count": 200,
"dtype": "float32",
"data": "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"
}
},
{
"method": "visual.Pixels",
"id": 7,
"timestamp": 1758185668.089566,
"parameters": {
"id": 4,
"positions(id)": 3,
"colors": [
0,
0,
0,
1
]
}
},
{
"method": "Pixels/render",
"id": 8,
"timestamp": 1758185668.089682,
"parameters": {
"id": 4,
"viewport(id)": 2,
"model": null,
"view": null,
"proj": null
}
}
]
}
Loading