[Opensim-dev] The state of content tools
Shack Dougall
shack at liferain.com
Fri Jul 24 17:57:33 UTC 2009
diva at metaverseink.com wrote:
> What is the state of the art for converting pre-existing 3D content into
> SL-OpenSim prims/sculpties? I'm thinking AutoCAD, Maya, Sketchup, among
> others. I'm involved in a project that really needs this kind of content.
>
I'm the creator of Prim Composer for 3ds Max.
It would be helpful to hear more details about the requirements of your
project. For example:
1) Which platforms do you need to support: OpenSim, Second Life, both?
2) has the project already identified 3D assets that it wants to use or
is it planning to create those assets?
3) What environment were the assets created in and/or what format is the
data in?
4) Do the assets have UV maps and textures/materials already applied
that the project would like to transfer into Second Life?
5) What is the time frame in which the project needs to move these
assets into Second Life?
6) Could you provide examples of the kinds of models that the project
would like to use?
6a) Are we talking about buildings or organic structures?
6b) Do the models have many extruded surfaces like the branches of a
tree or are they more box-like such as a car or building?
6c) Do the models have many holes in them, like windows, doors, etc.
or are they composed mostly of unbroken surfaces?
To my knowledge, there is no current tool that does a good job of
converting arbitrary 3D meshes to OpenSim/Second Life sculpties. It is
a hard problem to solve in the general case, but probably not impossible.
Many moons ago, Chip Midnight published a tutorial for creating
sculpties from arbitrary meshes using the Projection modifier in 3ds Max
(http://home.comcast.net/~pixelforgeltd/Tutorial.htm). This method has
been used successfully to make sculpties from pieces of existing 3D
models such as heads, legs, etc.
Two lessens can be learned from this technique.
1) If sculpties are going to be used to represent a pre-existing 3D
model, then in many cases, more than one sculptie will be needed.
2) When the resulting sculptie is inferior to the original model, a
baked texture with baked shadows in it can go a long way to hiding the
imperfections of the sculptie.
An algorithm for converting a 3D model into sculpties would probably
need to perform the following steps:
1) Analyze the 3D model to determine where transitions or levels of
detail require additional sculpties.
2) Slice up the model using the results of Step 1. Generate sculpties
from each of the pieces.
3) If an existing UV map and texture is on the model, then some
additional work will be required to create new UV maps on the sculpties
so that they will maintain the original texturing.
During this process, several different techniques could be used. Oblong
sculpts allow sculpties to be created in different resolutions and
aspect ratios. So, if a piece of the model doesn't require 1024 faces
(the standard sculptie resolution), then a smaller resolution could be
used. Also, the technique of snailing could be used where one sculptie
mesh is used to model disconnected geometry.
Then, at the end of this, all of the sculpties that make up the 3D model
will need to be scaled so that their edges match perfectly. If this
step is skipped, then places in the model where two sculpties meet will
not be seamless and might have small gaps. This happens because of
rounding errors when the vertex coordinates are converted to 24-bit
colors in the sculptmap.
It's not a trivial process, but I think it can be done.
In Prim Composer, the only part of this that I've implemented so far is
the last step. That is, Prim Composer has the ability to create a
single mesh that is composed of multiple sculpties and when this object
is exported to Second Life, the edges of the sculpties match
seamlessly. There is a video here
(http://liferain.com/downloads/primcomposer/tutorials/) called
"Composite Sculpties in 1.2" that demonstrates this feature. However,
this doesn't allow you to convert a pre-existing mesh into multiple
sculpties; it only allows you to create a new mesh that gets exported as
multiple sculpties. I believe that Domino Marama is working on or has
implemented a similar feature in his Blender plugin.
One additional wrinkle in this is prim size. If the pieces of your
model (the individual sculpies) would need to be larger than 10m in
size, then the only way to do this in *Second Life* is to use
megaprims. And that adds a whole other set of complexities into the mix
because megaprims cannot be created; they can only be rezzed from
inventory. This has huge consequences for an automated uploading system
because the uploader cannot simply create the megaprim. Instead, the
system has to find an existing megaprim that is the needed size--either
in the user's inventory or using some kind of a service such as SALT.
It's a major kludge and Prim Composer doesn't yet support it. I keep
hoping that LL will come to their senses and increase the maximum prim
size to something reasonable such as 100m.
So, those are my thoughts on converting 3D models to Second Life. I
don't have any immediate plans to implement what I've talked about, but
I do have the time if an organization wanted to fund such an effort.
I apologize for the length of this, but I want to mention a couple of
general things about Prim Composer before I close.
Prim Composer stores its data on disk using the Hierarchical Prim
Archive format (https://liferain.com/projects/hpa). This is a general
purpose, fully documented standard which defines the XML format and
project directory structure for a build. I have published the HPA spec
in the hope that it might be useful to other tool makers as a data
interchange format.
Finally, I want to mention that a primary focus of Prim Composer is
large scale builds, i.e., builds with thousands of prims or sim-sized
builds. Tools are under development that make it easier to manipulate
and construct builds on this scale. For example, Prim Composer can rez
builds in-world or package the build into a single-prim rezzer. In the
near future, it will also be able to automatically insert LSL scripts
into the build so that it can be manipulated in a way similar to
Builder's Buddy or Rez Foo. And I'm hoping to include in the LSL system
the ability to manipulate prims that are grouped into hierarchical
groups that are nested to arbitrary depth. This would allow you to
select by name a large group of related linksets and then move and
manpulate them as a unit.
For more information on Prim Composer:
http://liferain.com/downloads/primcomposer/
Hope this helps!
--Shack
More information about the Opensim-dev
mailing list