Joachim Baur
2011-01-21 09:30:31 UTC
Hi,
I just wanted to show my first (commercial) project using Papervision3D
to all of you for comments and/or criticism. It's a planning program for
placing outdoor furniture items on a patio with an integrated fly-around
3D-view.
The "OUFLEXX Loungeplaner" is in German:
http://www.gartenmoebel.de/loungeplaner/index.html
On the first launch you are shown the options for the shape and size of
the patio ("Grundfläche") - just klicking on the "OK"-Button applies the
default settings.
Then you can drag furniture items from the bottom row onto the
patio-area above and drop them there. Klicking on an already placed item
opens a small menu with commands to manipulate it ("Verschieben" = move,
"Drehen" = turn, "Löschen" = remove).
The 3D-view is rendered when you klick on the Button "3D-Ansicht zeigen"
in the lower lefthand corner of the patio-space.
Fortunately all of the furniture items were composed of cubic parts, so
I could just build them inside Flash/PV3D using the cube primitive
instead of modeling them in a separate 3D-Application and importing them
as DAE or else. What I really grew fond of is Papervision's feature of
excluding cubefaces when creating those cubes - so I could omit all the
cubefaces that are on the bottom or the inside of the furniture items
and would be culled by the render engine anyway.
The surrounding skybox, the patio, the furniture shadows and the
furniture items are all on different viewport-layers to reduce z-sorting
issues as good as possible. Still there are some z-sorting errors along
the borders within the furniture items when viewed from certain angles.
I played around a lot with different segment-counts for the cubefaces to
get rid of most of these issues, but unfortunately not completely.
In order to keep the filesize of the .swf small, I decided to create the
wicker-textures for all of the different surfaces on the fly in memory.
I use a 44x29 Bitmap (exported for AS) as a tile to bitmapFill a
3000x1000 bitmap in memory. From this 3000x1000 bitmapData I copy the
right-sized chunk for each surface into a new bitmap object and use that
for a bitmap material... Of course this approach is quite heavy on
RAM-usage, so with lots of furniture items sooner or later the flash
player will bomb.
Maybe there's a smarter way, if I could use some kind of UV-mapping with
the 3000x1000 bitmap itself instead of creating all new bitmaps for
every visible surface?
Joachim
I just wanted to show my first (commercial) project using Papervision3D
to all of you for comments and/or criticism. It's a planning program for
placing outdoor furniture items on a patio with an integrated fly-around
3D-view.
The "OUFLEXX Loungeplaner" is in German:
http://www.gartenmoebel.de/loungeplaner/index.html
On the first launch you are shown the options for the shape and size of
the patio ("Grundfläche") - just klicking on the "OK"-Button applies the
default settings.
Then you can drag furniture items from the bottom row onto the
patio-area above and drop them there. Klicking on an already placed item
opens a small menu with commands to manipulate it ("Verschieben" = move,
"Drehen" = turn, "Löschen" = remove).
The 3D-view is rendered when you klick on the Button "3D-Ansicht zeigen"
in the lower lefthand corner of the patio-space.
Fortunately all of the furniture items were composed of cubic parts, so
I could just build them inside Flash/PV3D using the cube primitive
instead of modeling them in a separate 3D-Application and importing them
as DAE or else. What I really grew fond of is Papervision's feature of
excluding cubefaces when creating those cubes - so I could omit all the
cubefaces that are on the bottom or the inside of the furniture items
and would be culled by the render engine anyway.
The surrounding skybox, the patio, the furniture shadows and the
furniture items are all on different viewport-layers to reduce z-sorting
issues as good as possible. Still there are some z-sorting errors along
the borders within the furniture items when viewed from certain angles.
I played around a lot with different segment-counts for the cubefaces to
get rid of most of these issues, but unfortunately not completely.
In order to keep the filesize of the .swf small, I decided to create the
wicker-textures for all of the different surfaces on the fly in memory.
I use a 44x29 Bitmap (exported for AS) as a tile to bitmapFill a
3000x1000 bitmap in memory. From this 3000x1000 bitmapData I copy the
right-sized chunk for each surface into a new bitmap object and use that
for a bitmap material... Of course this approach is quite heavy on
RAM-usage, so with lots of furniture items sooner or later the flash
player will bomb.
Maybe there's a smarter way, if I could use some kind of UV-mapping with
the 3000x1000 bitmap itself instead of creating all new bitmaps for
every visible surface?
Joachim