Damn these displacement activities!
Attempt using LightUp. (Lighting time: 11 seconds)
Damn these displacement activities!
Attempt using LightUp. (Lighting time: 11 seconds)
Thats not going to work generally. What if I scaled by 2.0 in X, 5.0 in Y, and 8.0 in Z?
Just forget the SU hack of storing stuff in t[15]. Overwrite it with 1.0..
The 4x4 matrix you get back is really 4 vectors each of 4 elements laid out as:
[x axis direction and length, 0]
[y axis direction and length, 0]
[z axis direction and length, 0]
[origin , 1]
The last (4th) element of each is to all intents, not used.
BTW If you want to remove all scaling from matrix you need to make the length of each of those axes = 1.0
If t is the Geom::Transformation, then using the methods t.xaxis
you get back a normalized vector.
m[0] = t.xaxis[0] m[1] = t.xaxis[1] m[2] = t.xaxis[2] m[3] = 0 m[4] = t.yaxis[0] m[5] = t.yaxis[1] m[6] = t.yaxis[2] m[7] = 0 m[8] = t.zaxis[0] m[9] = t.zaxis[1] m[10] = t.zaxis[2] m[11] = 0
gives you the transform with all scaling removed but leaving the rotation.
But before you go down the C++ route, I'd really suggest looking carefully at your Ruby and ensuring its as fast as it can be.
Make sure you're not creating lots of objects. Make sure you cache intermediate results. Make sure you don't use the fancy Ruby expressions for loops which are slow. Make sure you avoid at all costs any Struct stuff which is insanely slow.
And on..
Adam
@pixero said:
@unknownuser said:
Why does the order matter?
Thats what I learned.
Try Googling for: transformation matrices order
Here is just one link http://msdn.microsoft.com/en-us/library/eews39w7.aspx
The order does not matter. However, matrix transformations are not commutative (unlike for regular numbers).
eg Rotate * Scale is not the same as Scale * Rotate.
@thomthom said:
Trying desperately to debug this:
.transformation.to_a
returns this for the manually rotated and scaled box:
[1.4142135623731, -1.4142135623731, 0.0, 0.0, 1.4142135623731, 1.4142135623731, 0.0, 0.0, 0.0, 0.0, 2, 0.0, -16.3076205658699, 55.6776993060274, 0.0, 1.0]
If I then RotaScale the small box to fit the large one
.transformation
returns this:
[0.707106781186548, -0.707106781186548, 0.0, 0.0, 0.707106781186548, 0.707106781186548, -0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -8.15381028293495, 27.8388496530137, 0.0, 0.5]
Every value of the RotaScaled component is half of the manually scaled and rotated component.
Isn't X,Y,Z co-ords somewhere in the transformation array as well?
Yeah, I came across this too. Looks like SU (very naughtily) stores the scale in the W component of the 4th column. Its typically 1.0, so I guess they thought nobody would notice! So you need to set it to 1.0 explicitly.
Also check you 3 axes are all at right-anglers to each other (orthogonal). Your numbers above look good eg 1.414.. is square root of 2.0 (good) and then its 0.707.. which is reciprocal 2^0.5
Adam
I mean I want to create a tool that code-wise looks like this:
class MyProxyTool
def onMouseMove(flags, x, y, view)
<pseudo-code>
call the SU movetool with (flags,x,y,view) arguments
</pseudo-code>
end
.. and so on ..
end
So its a tool that just passes everything onto the Movetool (for example) to allow it to "do its stuff".
Does that make sense?
Adam
I think its a great idea. But I'd guess you would be hard pushed to find people who thought it was a Bad idea!
I've actually kept the bitmap of the control panel you posted some time ago as an aide memoire should I get around to adding stuff like that to LU.
But its a none trivial amount of work.. So don't hold your breath!
Adam
I'm sure this one has been discussed before, but I can't find the thread..
I know we mere mortals cannot create instances of the standard SU tools, but can we delegate messages to them?
I'm think it would be neat to have a custom tool be able to have mode where it was just acting as a Proxy and forwarding all onLButtonDown/onMouseMove etc to another tool.
Adam
Spectacular!
And so deeply depressing. Bit like the country being fed up with the absolute contempt our politicians clearly hold us all in, so turning around and voting to give UKIP MEPs โฌ200k/year for.. well, not a lot really given they don't actually agree with the EU in the first place. Bonkers.
Great feel to this model.
Made the door window an area emitter and added a skybox..
EDIT: just for completeness given it way lying around on my desktop:
True but it could support it using the same method Scott L used for his game demo.
Ie If you have a set of stop-framed poses named Frame#1,Frame#2,... all inside a Group, a Ruby could cycle through the contents of the Group hiding all but Frame#1, then all but Frame#2, etc to give animation.
Adam
Sure, it lists them out.
But I see absolutely no compelling reason to have "Logical AND" differing from "Logical composition" wrt precedence.
What is the 'use case' for the 2 forms? Does anyone know?
Adam
@thomthom said:
Found what the difference between
and
and&&
is:@unknownuser said:
The binary "and" operator will return the logical conjunction of its two operands. It is the same as "&&" but with a lower precedence
Well that explains something that I've been bitten by a few times..
mask = mask or object.getmask
assigns mask to itself and ors with the results of object.getmask()!!
I end up having to do:
mask = (mask or object.getmask)
What kind of madman would introduce such an operator?
Actually the one that beats all for sheer insanity is ruby.h #define-ing fopen() to be something completely different calling some Ruby thing. What the!, Argggh...
I've got some harsh language for Mr.Ruby when/if I meet him.
Adam
..and you know for certain Ruby evaluates left to right?
@honoluludesktop said:
LightUp, means that you can orbit the model in real time? Guess ray-trace is not always the way to go. Is the distressed material via bump map?
Yep, no problem moving around in realtime. LightUp will automatically generate a bumpmap from your texture which you can scale up and down (or replace it completely by choosing a normalmap / heightmap).
As to raytracing, well its "horses for courses" as the saying goes. Raytracing is great for models with lots of high frequency details - but mostly that is not what our models consist of, so approaches like LightUp make a lot of sense. Fundamentally, the best suggestion is to try both approaches on your own models and see which you like.
Adam
OK, here's a version sent to me by somebody with vastly more skill and design sense than me...sigh. The thing to remember when you look at these images is that you can walk around this in realtime.
Oh, and for the record "Realtime" is not updates take a few seconds. This is 30 times a second.
Casting around for some models to render in LightUp I found this thread...
Here's the results using HDR image-based lighting :
I can see that for big projects Sandbox tools are a bit limited, but for adding a little undulations to a model I'm pleasantly surprised.
Hey, 20 minutes modelling, 2 minutes lighting.
Slatted light is actually a SU fence texture and couldn't find leather so used tree bark for the lounger!
So can I rephrase solo's question a little and ask what people want from animation in SU?
I guess I wonder whether a full blown animation system is wanted or required.
What are the typical animated sequences (outside camera motion) that people generally need?
Its clearly both the motion itself and the "orchestration" of multiple objects, but whats commonly needed?
Adam