Hey ya’ll,
It’s been a while! I used to come around this forum in high school as “fitchmicah”. Anyhow, this is my first blender hack-in-progress. It has to do with something called the Moebius transformation, seen here in 2D:
.
Daniel Piker’s blog has a four page writeup on this, which totally captivated me when I first saw it, so I stayed up day and night, implementing it as a GLSL shader. The results can be seen here: http://hyperspectives.timbremill.net.
Right now the modifier is very simple, as is my understanding of the math. So for now the only parameter is a control object. The control objects quaternion is used to construct the two matrices described here.
Later on I’d like to add some more stuff like vertex groups, different coordinate options, etc. Let me know what you think. Critical feedback is greatly appreciated!
Also: for some reason the modifier doesn’t always work. I have to kill blender and start it again, then it works. It’s very strange. I do not understand it yet.
congrats! funny mod. moving 2nd object a bit gives differents shapes and can be used for something like “magnitude” slider so the shape doesn’t hit the camera.
here only works after entering in editmode and works only in edit mode when used after subsurface. maybe is a problem with derivedMesh or something?
I’m excited that you got a chance to play with it!!! And thanks for the insight on a maybe there being problem with derivedMesh. I guess I came to the right forum category! My method so far has often been to look at other modifiers and copy what they’re doing… I guess I should look at the documentation again and step through the chain of how derivedMesh works.
The thing that gets me is how, from the get-go, sometimes it works and sometimes it doesn’t. Maybe I am missing some kind of initialization?
are you sure it’s not the same problem? for example when i load your examples they don’t work before entering edit mode. probably it makes some confusion ir you are creating-editing new objects and loading existing ones.
the problem with subsurface could be something related to this (maybe, i’m still trying to understand the stack too)
All modifiers take a DerivedMesh as input. For deforming modifiers, that change the vertex coordinates of the mesh, the modifiers must only fill an array of vertices coordinates. Modifiers that change the structure of the mesh must provide a DerivedMesh as output. For nearly all modifiers a cdDM should be created. The subsurf modifiers makes an exception here, and used its own ccgDM for efficiency, since it deals with large amounts of elements.
also, the manhattan distance thing is interesting. i hadn’t heard of that before. check out this wikipedia article on the “minkowski distance” which is a generalization of manhattan distance (p=1) and euclidean distance (p=2). here’s what happens to the unit circle (or sphere) when you vary the power: