Nov
2008
Article Overview
- New SculptShape button and NURBS support
- Introducing the Maxproxy exporter: Copyright issues and program architecture
- Using Maxproxy to export from Second Life
- What's new in Maxport and 3ds Max
- A proposal for determining texture export rights
- ALL (printer friendly)
The Prim Composer 1.1 release adds the ability to export prims from Second Life/OpenSim and import them into 3ds Max. You can also re-import a project into 3ds Max that was previously exported from 3ds Max using Prim Composer.
In addition, for the first time, you can create NURBS-based sculpties directly within Prim Composer.
Prim Composer 1.1 will be released around Midnight EST tonight (Nov 14th).
NURBS Integration
In 1.1, NURBS sculpties are created using a new button called SculptShape. The previous creation button Sculpt has been renamed SculptMap. The SculptMap button, like the Sculpt button before, is used to create sculpted prims from a pre-existing sculptmap.
The new SculptShape button allows you to create sculpts in one of four basic shapes: sphere, cylinder, torus, and plane. Essentially, this is just an automation of the process of creating a sculptie from scratch. Both of the new sculpt creation buttons allow you to choose whether you want the sculptie created as an Editable Poly or Editable Mesh. SculptShapes can also be created as NURBS.
SculptShape is especially nice when creating NURBS because it overcomes 3ds Max’s default behavior of modifying the UV map as the NURBS is manipulated. This was a big problem in the past because the modified UV map was no longer square and couldn’t be used for baking. In some cases, 3ds Max would distort the UV map so much that sculptmap generation would fail. In 1.1, a NURBS sculpt created with SculptShape will not experience this problem. Its UV map will remain square and regular throughout the modeling process.
Known issues with SculptShape creation
SculptShape creates NURBS sculpts by importing basic NURBS shapes from a new file in the installation: “stdscripts/primcomposer/mesh/nurbs.max”. Most people will not have to worry about this. Just install Prim Composer as usual and nurbs.max will be included automatically. However, there is a possibility that people using 3ds Max 7 and 8 might experience problems. nurbs.max was created with 3ds Max 9, so I’m not sure if it will load in Max 7/8. If you have problems creating NURBS objects in 1.1, please post in the support forums and I will provide instructions to create a version of nurbs.max that will work with your particular version of 3ds Max.
Another potential problem occurs when using SculptShape to create a sculpted prim in the cylinder shape as an Editable Mesh. The resulting UV map is sometimes shifted left or right slightly. This is only an issue for baking and it doesn’t seem to happen with NURBS, Editable Poly, or with other shapes. If you experience baking problems, please check the UV map by applying a UVW Unwrap modifier and use it to fix the UV map. You can collapse the modifier stack after your done. If you don’t have problems, then don’t worry about it.
SL to 3ds Max Workflow
Of course, the really big feature in 1.1 is the ability to export prims from Second Life and OpenSim to a local disk. Once exported, you can load the project into 3ds Max or upload it to another grid. In 1.1, prims and linksets can be exported but not textures. You must be both the creator and owner of a prim in order to export it. Basically, you can export anything that you have created. Textures aren’t currently allowed because determining the creator of a texture is more difficult than for prims. Later in this post, I will discuss textures in more detail.
Copyright and Inter-grid transfer
Before I get into the details of how export works, it’s important to look at the legal and moral context in which this operates.
There’s no doubt that content creators have the right to transfer their own works to other grids, including both prims and textures. They do not, however, have to right to transfer the work of other people without explicit permission.
The most common way that this permission would be expressed is in the form of a license such as the GPL or Creative Commons. Without explicit permission from the creator, it is both illegal and immoral to transfer a work out of Second Life. Prim Composer will enforce the rights of content creators to the fullest extent possible.
This task is made unpleasant by the fact that there is no mechanism for determining licensing (SVC-701) or inter-grid transfer permissions (MISC-1277) via an automated process. In the absence of this information, an exporter is forced to err on the side of caution. Restraint is also demanded by the fact that exporting and re-importing content has the egregious effect of removing all of the original creator’s identifying information from the content. In effect, the person who re-imports the content becomes the new creator in the target grid.
It is for these reasons that no prim or texture will be exported unless it was created by and is owned by the person doing the export.
Maxproxy Exporter
1.1 includes a new program called Maxproxy. Maxproxy allows you to export prims and linksets from Second Life and OpenSim grids to the Prim Composer project format on local disk. Architecturally, Maxproxy sits between your viewer and the grid. The viewer connects to Maxproxy which then connects to the target grid. Maxproxy forwards packets from the grid to the viewer, watches the data stream to determine when you select things in the viewer, and responds to chat commands.
How to export
Start Maxproxy first, then start the viewer using the viewer’s –loginuri command line option to point the viewer to the url on which Maxproxy is listening. By default, Maxproxy listens for connections on the url “http://127.0.0.1:8080″. You can get a full list of Maxproxy’s command line options by typing
maxproxy.exe --help-export
on the command line.
In detail, here is what you need to do:
- Create a new shortcut for starting the viewer.
- Make a copy of the shortcut that you normally use to start the viewer.
- Edit the properties of the new shortcut and change the target field to include the –loginuri option.
The new target should look something like this, although yours could have additional options:
"C:\Program Files\SecondLife\SecondLife.exe" --loginuri http://127.0.0.1:8080
- Start Maxproxy
- Open a command prompt window (Start > Programs > Accessories > Command Prompt).
- Change the directory to the location of Maxproxy.
- Start Maxproxy. To connect to the main grid in Second Life, you would type:
maxproxy.exe --main
To connect to a local instance of OpenSim, you would type:
maxproxy.exe --proxy-remote-login-uri="http://127.0.0.1:9000"
Maxproxy is ready to receive connections when it prints out the following message:
proxy ready at http://127.0.0.1:8080/
- Start the Second Life viewer using the shortcut you created in Step 1 and login as normal.
Once you are in world, Maxproxy will chat to tell you that it is running.
- You can move around in your current sim, but sim crossings and teleports might not work.
Select the prims/linksets that you want to export. Use the normal prim selection mechanisms in the viewer.
- Save the selected prims by typing the save command in chat. For example, type:
/save myObject
in chat to save the selected prims to a project on disk called “myObject”. Type /help in chat for a full list of available commands.
The actual location of the saved project will be determined by the export directory. By default, projects are exported to “c:\prims\”. Thus, the location of myObject would be “c:\prims\myObject\”. You can change the export directory by specifying a different directory on the Maxproxy command line using the –export-dir option.
For example, if you wanted to connect to the main grid and to export projects to the directory “c:\projects\”, you would start Maxproxy with this command:
maxproxy.exe --main --export-dir="c:\projects"
or
maxproxy.exe --main --export-dir="c:\projects\\"
IMPORTANT: the final backslash in the directory name should be omitted or doubled. If you put a single backslash at the end, it gets confused.
DO NOT do this:
maxproxy.exe --main --export-dir="c:\projects\"
Note: there is currently no graceful way to terminate Maxproxy. After you logout of the viewer, the only way to close Maxproxy is to type Control-C in the Command Prompt window.
Changes to Maxport
In some cases, Maxproxy is unable to download all of the sculptmaps or textures that the user has permission to export. This happens most often with OpenSim when a texture is being downloaded more than once in the same session. For example, I see this problem when exporting the same object more than once from OpenSim. The first time that I export the object, all of the textures download perfectly, but if I try to do the same export again, then some of the textures fail to download. At this point, I’m not sure if it is a bug in OpenSim or Maxproxy, but I haven’t seen the problem yet with Second Life.
To compensate, a new option has been added to Maxport called –export-textures. When this option is used, Maxport scans the input XML file for sculptmap and texture references and downloads any that do not already exist in the sculptmaps and textures sub-directories. Thus, if textures failed to download with Maxproxy, you can logout of OpenSim and then run Maxport with –export-textures to get the missing textures. For it to work, you also need to specify the first name, last name, password, loginuri, and inputxml on the Maxport command line. Here is an example of how it might look (all in one line):
maxport.exe
--export-textures -flp first last pass
-u "http://127.0.0.1:9000" -i "c:\prims\myObject\myObject.xml"
Importing into 3ds Max
Inside 3ds Max, the Prim Composer menu has a new menu item called “Import”. Select this to import a project that was previously exported from 3ds Max or exported from Second Life or OpenSim using Maxproxy.
A dialog will open and prompt you to select or specify the .xml file of the project that you want to import. Press the Import button and Prim Composer will import the project at the origin of the scene (0,0,0). The next release will allow you to click where you want it to be imported.
Textures
Finally, a few words about textures and how I plan to export them in the future. As explained earlier, the guiding principle is that one should be able to export anything that they have created.
The problem with textures is that it isn’t always easy or even possible to know who created it. When a full perms texture is applied to a prim, only the Asset UUID of the texture is stored with the prim. The creator, owner, and all other permission information is stored in the user’s inventory. In this case, the only way to determine the creator of the texture is to search the user’s entire inventory for the original texture item that was applied to the prim.
This is unsatisfying for two reasons. First, many people have very large inventories and this can be a costly search to perform. But a more important issue is the fact that the original texture may not exist in inventory at all, since the texture could have been deleted from inventory after it was applied to the prim. And if it has been deleted, then there is no way to determine if the user was its creator.
The solution that I’m currently contemplating is to search for old textures in inventory. If the texture cannot be found, then Maxproxy will assume that the user is not the creator.
New prims uploaded by Prim Composer will have an encrypted notecard that will be used to certify the identity of the texture creator. One reason that I think it is important to have this mechanism for uploaded prims is that there isn’t a compelling reason why creators should want to or be required to keep baked textures in their inventories. By their nature, baked textures are specific to a particular prim and do not lend themselves to reuse.
I’m hoping to get a first pass at this in the next release.
See also: Prim Composer – Support.

[...] The full release notes explain the export process: [...]
I’m trying to export out of an local opensim region through Hippo OpenSim Viewer. I have the “proxy ready at 8080″ using the uri switch to 9000, but when I load the viewer maxproxy isnt loaded.
Sorry for the late reply. Hippo doesn’t seem to use the –loginuri switch. Instead, it has the “Grids” button on the login screen.
To use Hippo with Maxproxy, you need to add a grid to Hippo that has the Maxproxy loginuri.
I was reading some pages of the site, including installation orders, but from some reason there were no buttons added to my 3ds Max for creating sculpt, at all.
I was wondering if I have installed it right and went over the whole thing again, but found no errors, therefore I believe I did right, but something is still not working properly.
Maybe someone can assist me with it. Is there another stage after coping the “primecomposer” directory to the max “stdscripts”? Which files am I suppose to copy to 3ds max and to what directory?
Sorry for all the question, but I really want to start using it
BTW, if anyone has good tutorials for it, it’ll be great.
Thanks ahead
What version of 3ds Max do you have? Sometimes you have to restart 3ds Max twice after installation before it fully works. Do you see the “Prim Composer” menu in the top/main 3ds Max menu bar?
Yeah, I found it.
Now just need to figure out how to use it. Not as simple as I thought
The Prim Composer FAQ should answer most of your questions about how to use it. Plus, some of the newest features are described in blog posts such as this one.
Worked perfectly
Thank you very much
[...] to 3ds Max Prim Composer – adds the ability to export prims from Second Life/OpenSim and import them into 3ds Max. You can [...]