There was movement at the station …
So an object exists in 3D, right … that means they have absolute coordinates relative to some “origin”. In addition, they have 3 axes of rotation, commonly labelled X, Y and Z:
The object axes and the world axes may coincide, particularly if you are building straight things – that run north-south for instance, but may not also, if they have been rotated around, say, the Y axis. Thankfully after RTFM I found a bunch of key combinations that make movement of objects a little less pained:
Movement is in increments of 0.5, 0.05 and 0.01 units [I am assuming meters here, although I have yet to measure an avatar against an object to see if that scale is accurate. Arrow keys and the “+” and “-” keys move north/south/west/east/up/down – all very sensible. Shift with the same keys reduces the scale one notch, shift+control reduces it even further. Useful to know when gross then fine movement prior to alignment is necessary – again, all very straight forward if moving according to the compass. Any mathematician will, however, tell you it gets more complicated if the object is rotated slightly – as a change may not distribute itself evenly across the axes involved in the movement [*shakes fist at Pythagoras and his hippopotenuse*].
I also discovered mouse equivalents of most of these – once r-clicked to select, the mouse roller rotated on an axis, dragging moved it quickly n/s or w/e and so on, so rapid gross placement is also possible prior to final alignment and tidying up using more precise controls. Object alignment and seams between objects seem to be really important – overlap can cause some object seams to strobe oddly – something with the world engine and its rendering routines – this is particularly evident on floor pieces as you move over them.
Logic [yee gods, using logic already] would dictate that an object is easier to construct plumb first, then rotate it as a whole later if necessary [mental note: try to remember this]. Like a noob, I rushed to try something complicated – a geodesic dome, composed of sides made up of 6 equilateral triangle pieces [I found such a piece at my last visit to the Object Yard]. Aligning the pieces on each hexagonal facet was fairly straight forward, I then selected all of the objects and saved that as an object group – curiously to my local HDD. Then I was able to “pop” instances of the object group [although, strangely, each of the pieces of that group were still considered separate, still to work out how to “stick” bits together so they behave as one – nothing obvious has emerged yet]. Constructing the dome from the hexagonal facets helped me realise I know nothing of the angles involved and that will necessitate some research – I was guessing and that did not turn out well – the seams were messy, misaligned and in the end I just trashed it.
Rotation is conveniently achieved in scalable units of 15°, 1.5º and 0.1º – again, if the object is plumb these rotations can be relied on – combination roll, yaw and tilt complicate this however indicating that a PLAN might not be a bad idea when considering the structure of a constructed object.
Right-clicking on the object selects it and pops up an object properties dialog box – this box lets you edit some things, or records others – interestingly it lets you play with the position directly [so long as you know the absolute world coordinates that you are building in]. The dialog only echoes the rotation – this is annoying as I would like to type in the rotation I want directly.
The “Action” section of the object properties box is where it starts to get interesting – here you can script the object – in the above example, I made it 3x it’s original height using a “create scale” command. There appear to be heaps of things you can do here – stretching and distorting however can make the object look a little stretched also, so care is needed – I suspect some objects will scale terribly, given their textures stretch also [as opposed to tile – interestingly I cannot find how to get a texture to tile as of yet, early days though].
I notice you can assign an owner in the object properties also – I wonder if you can programmatically do this – that way if you spawn an object you could “give” it to the person who wanted it? Something else to explore. I also notice a “cell limit” and do not know what this means either. Some more research is warranted.