I just wanted to share a tool I’ve made that 3D scans addressable LEDs. I originally made this for a costume I did years back and thought it was well time to make it a bit more accessible.
Hi @TheMariday ,
Welcome to the forum! It was a pleasure to meet you and chat LEDs! Your costume is amazing, and I hope to check out this 3D mapping tool soon!
It looks like there’s a pretty simple API to drop in some communications to a Pixelblaze for mapping, and this takes care of the rest. The output shouldn’t be to hard to get in a format Pixelblaze can read too.
It’s pretty awesome that you capture the normal as well, the direction the LED is facing isn’t something Pixelblaze currently takes into account, but I can imagine all kinds of uses for that in both animations and in the live preview (especially for very dense & complex structures).
I’d love to see it integrated with pixelblaze, the backend as you said should be pretty straightforward and I want to add more output formats in the future anyway like .h and json files.
The normal thing was a bit of a biproduct of another feature which I haven’t put in the readme as its a bit specialised but marimapper can also use the led positions and normals to reconstruct a manifold mesh.
Without the normals, mesh reconstruction is a mess!
Have just used the “marimapper” and can confirm that it is awesome, as well as a big time and sanity saver. Here is my friend’s 600 LED Christmas tree post mapping
Good grief!! I feel like Charlie Brown and 3D mapping is a football being held by Lucy!!
Three days into this and I still can’t get it to work!
Here’s what I’ve done so far…
downloaded ‘marimapper’ from GitHub and unzipped it.
replaced a previous copy of Python 3.12 with 3.11 (I have never used Python before, so it’s likely I won’t ever need two versions).
placed a copy of ‘marimapper’ on my desktop, copied and pasted location with “cd” command in PowerShell.
tried to run ‘marimapper’, Python couldn’t find Git.
downloaded Git, Python still unable to find it.
watched three or four YouTube videos, copied and pasted Git “bin” and Git “cmd” onto Path in System Variables.
back onto YouTube again where a nice man named Jana suggested that perhaps my syntax errors and ‘errorno"X"’ may be caused by my not realizing that Windows PowerShell is only a terminal and can run Windows commands as well as running Python. Watch for <<< !!! Definite AHA! moment here.
re-read ‘readme’ and tried using ‘pip’ in PowerShell (NOT Python!!) ‘pip install pipx’,
‘pipx ensurepath’, and ‘pipx install git+https://github.com/themariday/marimapper’. That seemed to work and a prompt told me that ‘marimapper’ would now work with a simple ‘.exe’ command.
‘marimapper.exe’ seemed to work, but then returned this screen…
(The bottom seven lines are an attempt to run "marimapper’ in Python…)
I feel like I’ve driven miles and miles and my actual destination could have been reached on foot if I knew where I was going!
I likely have screwed up the order of one or more of these steps, it’s all a little fuzzy at the moment. I knew it was going to be a challenge for me, but at this point I could use a little help if anyone can see where my mistakes are.
Thank you very much in advance!!!
So firstly, you are spot on using pip / pipx to install marimapper, by far the easiest and safest way to install the tool. running marimapper.exe in powershell should do what we need!
Next up, why isn’t it?
After a quick google I think there’s two things that could be causing things to explode:
1: Norton anti-virus
I am wondering if Norton is jumping in and blocking marimapper from accessing the libraries it needs.
I’m not sure how to tell Norton not to do this, but the advice I’ve been finding online is that Norton is famously known for blocking pretty much everything and breaking a lot of programs.
Afraid I can’t help hugely here!
The general vibe I get online is that Norton is more of a thorn in peoples side in comparison to using the built in windows security unless you are downloading a lot of dodgy content.
2: Multiple versions of python
The second idea is that multiple versions of python might be confusing the linker. Try uninstalling all references to Python from the Windows uninstall panel and start again with Python 3.11
I’m going to aim to put out a video tutorial over the christmas period, so worst case scenario there should be a step-by-step guide coming out very soon.
I hope this gives you some ideas and thank you for reaching out! I’ll do my best to help where I can
I tried a Christmas-y thing too - no tree, so I created a tree in a mess of LEDs mapped in 3D space with marimapper
cyl = [0.44,0.2,0.5] // location of the top of the "tree"
cs = 0.4 // Slope of the side of the tree
br = 0.1 // radius of the start at the top of the tree
th = 0.05
var t1
export function beforeRender(delta) {
t1 = time(.1)
}
// cone SDF
function cylsdf(x,y,z) {
dx = x - cyl[0]
dy = y - cyl[1]
dz = z - cyl[2]
dr = sqrt(dx*dx + dz*dz)
if (dy <0 ) {
// chop off the top (more correct would be intersecting with a plane)
return 999
}
return dr - dy*cs
}
// sphere SDF for the "star" at the top of the tree
function stsdf(x,y,z) {
dx = x - cyl[0]
dy = y - cyl[1]
dz = z - cyl[2]
dr = sqrt(dx*dx + dz*dz + dy*dy)
return dr - br
}
export function render3D(index,x,y,z) {
bv = stsdf(x,y,z);
if (bv < 0) {
// inside the start
hsv(0.15, 0.5, 1.0)
return
}
cv = cylsdf(x,y,z);
v = 1 - smoothstep(-0.03, 0.0, cv)
if (cv > 0 && cv < th) {
// blinky colors just outside the edge of the cone
pl = perlin(x * 15.0,y* 15.0,z* 15.0 + t1 * 10.0,99)
pl2 = perlin(x * 15.0 + 4,y* 15.0+8,z* 15.0 + t1 * 10.0,99)
hsv(pl2, 1.0, pl)
return
}
// green cone
hsv(0.33, 1.0, v * 0.66)
}
I really appreciate your help!
I tried 3 different ways of informing Norton that marimapper.exe was safe and I wanted it to ‘stand down’, but the program was unrelenting in it’s refusal to run the script, despite the override features that I specified in Data Protection…so it got itself uninstalled! Still can’t run the script, but I got a new computer in the process!!! Waaay faster now than it was, I mean minutes, not just seconds faster on initial start-up. Awesome change. Thanks for the good advice!
I then uninstalled all Python versions and started over with 3.11, not much changed, just lots of error messages. So I decided to switch computers and started from scratch on my Samsung Galaxy Book (it’s a notebook style pc running Win 10), downloading Python 3.11, Git, and the marimapper zip. Things were proceeding well and the marimapper program completed one scan, but when I moved the computer and tried for the second scan the following message was displayed,
C:\Users\xxxx\pipx\venvs\marimapper\Lib\site-packages\numpy\core_methods.py:192:
RuntimeWarning: invalid value encountered in scalar divide* ret = ret.dtype.type(ret / rcount)*
If anyone can help with this I would really appreciate it, I have a couple of 3d Pixelblaze projects I would love to map but I really am Python illiterate!!
I hope this doesn’t sound like, “I’d love to learn how to swim, but I hate getting wet!”
Glad to hear about the new, norton-free machine! Sounds like it’s well deserved.
I’ve recently updated marimapper, this might solve this issue as I have seen it myself.
The message you got was a warning so it might be able to be ignored! However if not…
I would highly reccomend installing marimapper with pipx as it might save you a lot of pain, have a look at the readme if you need pointers there.
If you’d prefer to use the zipped file, try re-downloading the zip from github, extracting it and then opening a terminal inside the unzipped folder and run the following commands:
pip uninstall marimapper pip install .
Thank you so much for letting me know about these issues! It should absolutely 100% work straight out of the box and I don’t expect anyone should need to have python knowledge to run this tool.
Hope this helps and let me know how you get on.
Mariday
P.S. I’ll try and check this thread more often but worst case scenario I’m more active on mastadon
Thank you very much for your help!! When it comes to Python I’m that guy that will help ensure everything is “idiot-proof”! I will follow your suggestions and use “pip”. In the meantime, the tree is back in it’s box for eleven months, the pressure is off, and I can learn how to 3D map on some less stressful projects.
Thanks again for giving us the marimapper and I really appreciate the personal assistance!