Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Offline Builder Alpha Release

Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
04-16-2006 01:13
Also, if anyone is still looking for a timeline, here's my current schedule of events preceeding work on this project:

Next two weeks I have to complete:

* Three 10-page assignments
* One OpenGL/SDL/C++/Python-based game
(!)
* One minor Databasing project

And in three:
* Final Exams
* Graduation Ceremonies
* One (1) Pecan Pie


Bottom line.... uh. Give me a little longer, um'kay? :D
_____________________
---
Charles Granville
Registered User
Join date: 18 Mar 2006
Posts: 33
04-16-2006 13:28
If you want, I can help you out with that pie. XD
Purrts Trumbo
Registered User
Join date: 7 Sep 2005
Posts: 22
04-17-2006 17:09
I vote for importing via notecards. That is when you get some time to play with it. :) Thanks a bunch for great tool idea.
Persig Phaeton
Registered User
Join date: 20 Nov 2003
Posts: 49
04-20-2006 15:08
From: Jeffrey Gomez

I contacted two Lindens about this project. One gave me a rather lukewarm response, the other did not reply whatsoever. In the interests of being polite, I will not reveal whom. Thank you for the enthusiasm, though. I sincerely appreciated that post.

...
...



I just wanted to add to the chorus and say that I've been quietly following this project as well. For over a year now, I've been thinking that anyone who can offer this exact solution in its entirety will single-handedly revolutionize the look and feel of builds in SL. I'm sorry you haven't seen more support or enthusiasm from LL in this regard because it really is fine work that you're doing.
Also just wanted to send a general word of praise your way regarding all the great stuff you've already generated like LSL 101 and handy scripts for builders. You've been a positive force in this world ever since you got here and it will be a shame if you go after you finish the off-line building solution. I certainly would understand...but don't you want to stick around and see how this tool is put to use?! :)

Persig
Koder Serf
Registered User
Join date: 3 May 2006
Posts: 1
Wow....
05-05-2006 14:15
Verily thou doth truly rock... eth?

This is a fantastic concept! One of the first questions I asked when I joined SL was for an offline development tool, since I have a lot of free time (at work, of course) that is sadly sans internet access.

Due to the universality (did I make that up?) of XML, I would go that route over notecards. Should someone need to access the information in a non-SL program XML would seem better.

Just my two L$....
Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
05-05-2006 16:14
From: Koder Serf
Due to the universality (did I make that up?) of XML, I would go that route over notecards. Should someone need to access the information in a non-SL program XML would seem better.

Just my two L$....

That. Is. A brilliant suggestion. No, seriously, it is!

Thanks. :D
_____________________
---
Indigo Myriam
Registered User
Join date: 1 Apr 2006
Posts: 9
05-11-2006 14:03
This needs to be done.
Jeff you rock my world

Lindens!!! Doooo something pleeeasee!!!
Think about it, if people only log in for building, it makes the game lag more right? more stress on the servers, so an external program is great!!
Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
05-31-2006 00:46
It is done.

I updated the original post. I'll also be posting a little something over in the building forum as well. ;)


So....

Bump!
_____________________
---
Lex Neva
wears dorky glasses
Join date: 27 Nov 2004
Posts: 1,361
05-31-2006 09:33
This is an awesome idea! The only thing is, the interface has me absolutely confused. I don't have any blender experience at all, so I'm having a really hard time figuring out how to control this thing. Can anyone give us a quick tutorial?

Also, the detail thing... I wonder if any correlation exists between the highest LOD in prims and one of the detail slider settings.

Also also, I think someone pointed out in the other thread... the X hole size is off. The 1.0 value is acting like 0.5... the reason that the X hole size seems like a mostly useless parameter is that it really only comes into play when you twist a torus. If you set the begin and end twist to 90 degrees, suddenly X and Y hole size trade places.
YadNi Monde
Junkyard Owner
Join date: 30 Mar 2004
Posts: 189
Wow !!!! ô.ô
05-31-2006 10:29
Jeeze so when all this is completed, i ll be able to build at my work (night receptionnist in an hotel, which is a rather calm activity in itself, giving some free time =) and Import Ingame when i m back ???? woaaaahhhhhh !!!!! :p Jeffrey you are a Nut =) <3U!
_____________________
---------------=If It S Not Primmy It S Not A YadNi=----------------
-=In a MMORPG u levelup a Character, in SL u levelup the User.=-
----------------=Your only limit is Your imagination.=--------------

------------------------------------------- ;) Yours, Friendly, Yadni =)

Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
05-31-2006 10:59
From: Lex Neva
*

Thanks for reminding me! In my tired state of mind yesterday, I forgot to put up the simple "how to use Blender" part. I'll append that to my main posts and add it to the Readme shortly.


For now:
G -- "Grab" -- move the primitive
R -- "Rotate" -- rotate the primitive
S -- "Scale" -- scale the primitive


Tap X,Y, or Z once after the above to move, rotate, or scale in a given direction
Tap it again to move, rotate, or scale in a local direction


Selection controls:
Left-click: Place cursor (position to spawn new primitives)
Right-click: Select this prim, or a group of prims


Camera (if no mousewheel, use numpad 2 and 8):
Mousewheel: Zoom Camera
Shift + Mousewheel: Translate Camera (up and down)
Ctrl + Mousewheel: Translate Camera (left and right)
Ctrl + Alt + Mousewheel: Pan Camera (left and right)
Mouse 3 (mousewheel button) + mouse movement: Free camera


I'm working on those bugs now. Can you get me a screenshot or process for the 90-degree problem? I was unable to get it to express in my copy of Blender.

And no, LOD doesn't reflect Linden levels at all. It's just a handy thing I added. This is all original code, so I suspect a lot of it differs from Linden prims in subtle ways. Most notably, the Euler system of rotations...
_____________________
---
Eddy Stryker
libsecondlife Developer
Join date: 6 Jun 2004
Posts: 353
05-31-2006 16:48
Maybe the Lindens will release the specs for the mysterious SLXML format? If not it would be fairly trivial to wrap object properties in some XML, but it would be great if the users weren't trying to compete with the company. For reference here is the packet out of the protocol referencing SLXML (and Collada, which is very interesting but better for exporting from SL, not importing in to it):

CODE
LOW 00153 - ObjectExportReply - Untrusted - Zerocoded
0487 TextureData (Variable / 1)
0668 AssetID (LLUUID / 0)
1431 AssetNum (S32 / 0)
1278 AgentData (Single / 0)
0212 AgentID (LLUUID / 0)
0347 RequestID (LLUUID / 0)
1333 AssetData (Single / 0)
1410 ErrorCode (S32 / 0)
1411 SLXML_ID (LLUUID / 0)
1446 Collada_ID (LLUUID / 0)

And the packet describing actual objects themselves, that the XML file could be roughly modeled after:

CODE
High 00013 - ObjectUpdate
0125 ObjectData (Variable / 1)
0030 ID (U32 / 0)
0090 UpdateFlags (U32 / 0)
0125 ObjectData (Variable / 1)
0142 PathTwistBegin (S8 / 0)
0143 CRC (U32 / 0)
0154 JointPivot (LLVector3 / 0)
0158 PathEnd (U8 / 0)
0276 MediaURL (Variable / 1)
0290 TextColor (Fixed / 4)
0380 ClickAction (U8 / 0)
0400 ProfileBegin (U8 / 0)
0485 PathRadiusOffset (S8 / 0)
0498 Gain (F32 / 0)
0501 PathSkew (S8 / 0)
0516 Data (Variable / 2)
0518 TextureAnim (Variable / 1)
0546 ParentID (U32 / 0)
0565 Text (Variable / 1)
0601 ProfileCurve (U8 / 0)
0678 PathScaleX (U8 / 0)
0681 PathScaleY (U8 / 0)
0692 Material (U8 / 0)
0734 NameValue (Variable / 2)
0735 PathShearX (U8 / 0)
0736 PathShearY (U8 / 0)
0747 PathTaperX (S8 / 0)
0748 PathTaperY (S8 / 0)
0800 Radius (F32 / 0)
0835 ProfileEnd (U8 / 0)
0865 JointType (U8 / 0)
0894 PathBegin (U8 / 0)
0938 PSBlock (Variable / 1)
0962 PCode (U8 / 0)
0998 FullID (LLUUID / 0)
1044 PathCurve (U8 / 0)
1108 Scale (LLVector3 / 0)
1148 JointAxisOrAnchor (LLVector3 / 0)
1171 Flags (U8 / 0)
1236 State (U8 / 0)
1242 PathTwist (S8 / 0)
1256 Sound (LLUUID / 0)
1258 TextureEntry (Variable / 2)
1269 ProfileHollow (U8 / 0)
1284 PathRevolutions (U8 / 0)
0841 RegionData (Single / 0)
0238 TimeDilation (U16 / 0)
0648 RegionHandle (U64 / 0)
Seifert Surface
Mathematician
Join date: 14 Jun 2005
Posts: 912
05-31-2006 17:20
From: Jeffrey Gomez
I'm working on those bugs now. Can you get me a screenshot or process for the 90-degree problem?
That's not a bug, its a feature! (of SL). I think SL does the same thing the blender script does, i.e. if you set both start and end twists to 90 degrees, then x hole size expands radially and y hole size expands along the direction of the axis of the torus. With the start and end twists at 0 those roles are reversed. At other angles appropriate things that are harder to describe happen.
_____________________
-Seifert Surface
2G!tGLf 2nLt9cG
Lex Neva
wears dorky glasses
Join date: 27 Nov 2004
Posts: 1,361
06-01-2006 09:26
Ooh, thanks for the quickie tutorial.

From: Jeffrey Gomez

I'm working on those bugs now. Can you get me a screenshot or process for the 90-degree problem? I was unable to get it to express in my copy of Blender.


Well, that wasn't me actually describing a bug in your stuff, it's how it is in-world. You can make two identical toruses with differing parameters:

scale <0.25,0.5,0.5> hole-size 1.0,.5

or

scale <0.5,0.5,0.5> hole-size 0.5,0.5

It seems like they don't differ at all, because the X hole size just seems to scale the X size proportionally. It took me over a year to figure out an actual use for the X hole size, but it turns out that it comes into play when you start to twist the torus. If you set the begin and end twist to 90 on that second one above, you've essentially swapped the roles of the X and Y hole sizes... giving you more range in the radially-based one, enough to even overlap in the center if you want. You also, more importantly, switch the location of the profile cut, which can be incredibly useful. (Sorry if you already knew all of this)

Anyway, your bug is that a 1.0 X hole size in your app produces what a 0.5 X hole size in-world would make, I think.
Thraxis Epsilon
Registered User
Join date: 31 Aug 2005
Posts: 211
06-01-2006 13:19
I am home from work and got to finish testing my importer I wrote at work.



I still have a couple things to add, but it is importing now.
Cloud Bunin
Registered User
Join date: 7 Nov 2005
Posts: 4
06-06-2006 14:49
Holy hell, this is a godsend.

I'm a huge blender fanatic and you've just gone and done something I'd started planning out on paper. I don't know how to say thank you enough!

Everything seems to work a treat. After a tick I got the importer working in-game, and I'm getting objects into SL with no complications. I seem to have a bit of an issue with having twisted torus objects look the same in-game as out of game (randomly, the twist will just be wrong), but that's not an important thing for me as right now I'm attempting to build Optimus Prime. ^_^;

So a question: have you come to a decision on making an object De-Rezzer? I'd love to save my prim skirts and my Optimus to a local file for more editing (the in-game editor, as you obviously realize, has a lot of limitations that I wouldn't mind getting around). Something similar, where you drop your object inside a similar cube and the cube creates a note card which can then be copied and pasted. Obviously this opens a can of worms for people stealing objects (I checked on textures -- you can't get texture keys as of SL 1.65 or something, so they're safe now), but stealing aside I'd like to continue my project in Blender.

Notes:
1) The import feels slow, although I have *no* idea how to speed it up. From the looks of your code, and from my limited knowledge of how SL works, I don't see any faster ways to pull this off.
2) It'd be nice if the script added hooks for Shift-D so that we can use the standard Blender duplicate keystroke and still have it be recognized by the script. (Can do it with the Window.QAdd etc functions iirc)
3) On sizes: I don't know if you went over this, but the sizes in Blender and the sizes of what's imported are different. The torus in sample.prims, for example, reads as 0.5 on all sides in Blender units but as 2.357m on all sides in SL. It'd be nice to see some sort of parity there. (Maybe I did something wrong, though.)
4) For the rezzer script, it'd be neat if it just went through and rezzed objects from every note card in the object's inventory instead of looking for a specific name.
5) the number sliders in the menu for the script sometimes don't accept a typed value. This is especially the case with torii. Clicking on one of the arrows works fine, so I don't know what's going on there.
6) When an object isn't being sliced (IE, the Begin and End are 0.0 and 1.0 respectively), you shouldn't create a face inside the other faces on the object. Also, a lot of verts here and there aren't welded.
7) Non-flat surfaces should have the faces "set smooth"ed.

I know that's a long list. I don't mean to sound ungrateful; far from it. I just thought you might like feedback from a fellow Blenderhead. ^_^;

Now, I do see a problem coming of this: prim attachments on Avatars are going to start getting more and more complex. ^_^; I wish there was a setting to turn off prim attachments per avatar if they make your view go screwy. Any time I'm around a member of Organization XIII in SL my machine slows to a crawl. ^_^;

Please keep going! I'd love to see at least color taken from blender object and applied to imported prims.
Thraxis Epsilon
Registered User
Join date: 31 Aug 2005
Posts: 211
06-06-2006 15:15
I can't speak for Jeremy on the builder tool. But I can speak about the importer.

From: someone

So a question: have you come to a decision on making an object De-Rezzer? I'd love to save my prim skirts and my Optimus to a local file for more editing


It is possible in theory.... but you would have to put a script in every prim in the object that would then spit it's settings out to a prim to record the information.

From: someone

1) The import feels slow, although I have *no* idea how to speed it up. From the looks of your code, and from my limited knowledge of how SL works, I don't see any faster ways to pull this off.


You're right it is dog slow, can it be improved? Hmm... that is a good question, I'll have to see what I can do about it. I have an idea that may work.

From: someone

4) For the rezzer script, it'd be neat if it just went through and rezzed objects from every note card in the object's inventory instead of looking for a specific name.


I've been thinking of two variations, the first will rezz whatever notecard you drop on it, then delete the notecard from inventory. The second will give you a menu of notecards in the object and you can pick the one you want to rez.
Thraxis Epsilon
Registered User
Join date: 31 Aug 2005
Posts: 211
06-07-2006 01:34
I just finished a new version of the importer.

Features:

10 Rezzing threads
Drop Notecard on the Importer to rez a build
Large build support using WarpPos to move the prims

You can pick up a copy at this location.

http://slurl.com/secondlife/Brithys/111/234/54
Zar Zadoq
Learning the Second Life
Join date: 8 Nov 2004
Posts: 21
Can't seem to aquire a copy in SL
06-17-2006 01:03
From: Thraxis Epsilon
I just finished a new version of the importer.

Features:

10 Rezzing threads
Drop Notecard on the Importer to rez a build
Large build support using WarpPos to move the prims

You can pick up a copy at this location.

http://slurl.com/secondlife/Brithys/111/234/54


I just tried to go pick it up and it seems to not have proper permissions for my to buy or take a copy....
Foolish Frost
Grand Technomancer
Join date: 7 Mar 2005
Posts: 1,433
06-17-2006 05:56
From: Thraxis Epsilon
I can't speak for Jeremy on the builder tool. But I can speak about the importer.



It is possible in theory.... but you would have to put a script in every prim in the object that would then spit it's settings out to a prim to record the information.


Sorry. Just wandered in. Have a question for you.

(I'm at work right now, so I can't test this at all)

I know you can give scripts to other items if the item has a llRemoteLoadScriptPin set properly, and that the script can run upon being inserted by a give inventory operation.

The question is, if you set the pin for the root prim, does that effect ALL the child prims as well? If so, would it not be the matter of a moment to drop the script in the root prims, have it virally distribute itself to all child prims, and then dump to a datastore for use in your 3rd party program?
Thraxis Epsilon
Registered User
Join date: 31 Aug 2005
Posts: 211
06-18-2006 05:19
From: Zar Zadoq
I just tried to go pick it up and it seems to not have proper permissions for my to buy or take a copy....


It is fixed now.. I seem to have set the last one out as "Buy Origional" and someone bought it ($0 Linden of course)

I put a new copy out.
Christopher Omega
Oxymoron
Join date: 28 Mar 2003
Posts: 1,828
06-18-2006 18:24
From: Foolish Frost

The question is, if you set the pin for the root prim, does that effect ALL the child prims as well? If so, would it not be the matter of a moment to drop the script in the root prims, have it virally distribute itself to all child prims, and then dump to a datastore for use in your 3rd party program?


Unfortunately, this isnt the case. The pin is a per-primitive atribute; you'd still need a script in every prim to set its pin.
==Chris
1 2 3