* FAQ    * Search  * Register * Login 
Active topics
Unanswered topics

All times are UTC-06:00



Post new topic  This topic is locked, you cannot edit posts or make further replies.  [ 33 posts ] 
Author Message
 Post subject: How to have less faces in 3DS Max
PostPosted: Sat Feb 23, 2008 4:22 pm 
Offline
DBB Ace
DBB Ace

Joined: Sat Feb 23, 2008 4:16 pm
Posts: 124
Hello. I currently model various things in my spare time in 3D Studio Max, and i have been having some issues. I know that there are some people here who do this kind of thing, whether it be for Descent or whatever. Whenever i make my models, they always come out with 1000's of faces or more. What i use them for does not like that, and i need to know hiw to reduce them (if possibly there is a way to do it without redoing the entire thing). Help would be greatly appreciated!


Top
   
 
 Post subject:
PostPosted: Sat Feb 23, 2008 6:13 pm 
Offline
D2X Master
D2X Master
User avatar

Joined: Thu Nov 05, 1998 12:01 pm
Posts: 5278
Website: http://www.descent2.de
Well, once I've given my current ISP the boot and moved to a better one you can join the D2X-XL forum and ask our main modeler MetalBeast for help.

As far as I know he isn't too fond of face removal tools and does everything by hand.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 11:37 am 
Offline
DBB Ace
DBB Ace

Joined: Tue Jan 24, 2006 11:15 am
Posts: 23
Website: http://www.avenger.sk
There are plenty modifiers that let you do just that. I`m a programmer (not an artist), but from the top of my head there should be modifiers named like Optimize, Multires. One of them lets you freely choose the vertex count by percentage in a range of 0%-100%. That`s the one I always use to decimate the polygons since you can freely rotate the mesh and decide whether it`s still too much detailed or it could handle another reduction.

You`ll notice though that the texturing may break while reducing polys. That`s normal. Thus, it`s prefered to texture the mesh only after you have the final mesh.


Just one more thing to remember - it`s the VERTEX COUNT that counts,not TRIANGLE COUNT.

So, the important thing is to reduce the amount of vertices, not triangles - which is especially important under 3dsmax, because you can start manually retriangulating the mesh and you could end up with a mesh that has less polys but it`ll still have same amount of vertices.
Ever heard the term \"Vertex Shader\" ? It`s a little program that is executed upon each vertex of the mesh (to transform/light/texture (coords) it) by your gfx card.

_________________
www.avenger.sk
VladR Games


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 1:24 pm 
Offline
DBB Ace
DBB Ace

Joined: Sat Feb 23, 2008 4:16 pm
Posts: 124
ok, thanks, will have to try


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 2:15 pm 
Offline
DBB Ace
DBB Ace
User avatar

Joined: Wed Sep 05, 2007 6:03 am
Posts: 151
Website: http://3d-get.de/metalbeast
Location: http://3d-get.de/metalbeast
Hi,

if you want to have really good low- or mid-poly meshes you have to make them yourself.

Using any kind of poly-reducing tools, make the mesh unclean. the polygon structures are going to be bad.

So all kind of such tools are only good, if you are using the meshes for renderings only.

If you want the meshes for games or other application, you have to make them yourself, using the highpoly mesh as reference only.

There are many tutorials on the net how to start and lern low-poly modelling.

Examples:
http://www.3dtotal.com/team/Tutorials/b ... this_1.asp
http://www.techtut.com/Tutorial/3D-stud ... house.html


Hope this helps,
MetalBeast.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 2:59 pm 
Offline
DBB Ace
DBB Ace

Joined: Sat Feb 23, 2008 4:16 pm
Posts: 124
I have found that when using techniques like extruding, as suggested in the tutorials, that i always get a (d)i(e)i(g)i(e)i(n)i(e)i(r)i(a)i(t)i(e) (exclude i's) triangle error when put the model through to be processed by the game engine i am using. That error is really getting on my nerves, and i don't know exactly what i am doing that is causing it.

For example, when i use a model of a pyro from wherever, whether it be extracted from some game/mod, i make sure it is in 3ds max and looking good. I then export it to X (x being whatever) format and process through my game tool (makes tags and such), it always comes up with that error, and it is not due to open faces (can be though), but it is in fact due to two or more triangles sharing the same side. And this is tru for almost any slightly comples model that i make or download. Being a rookie at modeling, i am not sure what the problem is or what to do.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 3:31 pm 
Offline
DBB Ace
DBB Ace
User avatar

Joined: Wed Sep 05, 2007 6:03 am
Posts: 151
Website: http://3d-get.de/metalbeast
Location: http://3d-get.de/metalbeast
It is difficult to say anything, if we don't know what format or engine you are using.

Anyway, if you want some model to check for bugs, just sent it to me in max format, I can check it for you.

I think your problem can be engine related.
Some engines don't like, if meshes have vertices at same places, belong to different faces, but you need it for planar UVW-Mapping.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 3:47 pm 
Offline
DBB Ace
DBB Ace

Joined: Sat Feb 23, 2008 4:16 pm
Posts: 124
For example, I can extract the Pyro GL from the main D3 Hog File. K, now i have it in .oof format. I downloaded a program to convert it to .3DS. Now it is in 3DS format. I open it up (import, rather) in Max and on the right side from the drop down bar do an SDL check. When i do that, a whole bunch of faces get highlighted red, because they are in error. This is because (i'm pretty sure) two or more triangles share the same side(there are no open faces or oher errors i don't think). When i export and process it i will get errors, and the model won't work, whereas if i do the same thing with a box, no faces are selected and it works ok.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 3:55 pm 
Offline
DBB Ace
DBB Ace
User avatar

Joined: Wed Sep 05, 2007 6:03 am
Posts: 151
Website: http://3d-get.de/metalbeast
Location: http://3d-get.de/metalbeast
Ok, now we get closer ;)

The tool you are talking about is 3DSgen?,
so I have to say you, this tool is crap, sorry.
I used it few times, but the meshes which were produced are useless.

You can fix it, but it is full load of work.

You have to find the right vertices-radius and select the whole model. Then select all vertices and choose \"weld selected\", this will clenup all the useless vertices in mesh and delete most of doubled faces, but not all. So depend of mesh complexity you have to correct the rest manually.

What I made was using the converted meshe as reference and made completly new one.
It is better and cleaner, than fixing bad meshes.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 4:45 pm 
Offline
DBB Ace
DBB Ace

Joined: Sat Feb 23, 2008 4:16 pm
Posts: 124
OOF to 3DS 1.0 With this program you can convert the geometry information stored in OOF-files (Outrage Object Files) to 3DS-files (3D-Studio). 44.7 KB DF | FP
http://www.planetdescent.com/site/files ... opment.asp

Taken straight from PD, this is what i have been using after awhile ago i discovered that 3dsgen was crap.

So are you saying that this will get rid of the error?


Top
   
 
 Post subject: Re:
PostPosted: Sun Feb 24, 2008 5:19 pm 
Offline
DBB Benefactor
DBB Benefactor
User avatar

Joined: Sun Jun 03, 2001 2:01 am
Posts: 935
Location: Illinois
zombie999 wrote:
Ok, now we get closer ;)

The tool you are talking about is 3DSgen?,
so I have to say you, this tool is crap, sorry.
I used it few times, but the meshes which were produced are useless.

You can fix it, but it is full load of work.

You have to find the right vertices-radius and select the whole model. Then select all vertices and choose "weld selected", this will clenup all the useless vertices in mesh and delete most of doubled faces, but not all. So depend of mesh complexity you have to correct the rest manually.

What I made was using the converted meshe as reference and made completly new one.
It is better and cleaner, than fixing bad meshes.


Sorry, 3dsgen is not crap. It was written to be used in conjunction with Max OOF Utility not by itself. That is where you had your problems.

3dsgen does that on purpose because it is not possible to preserve textures correctly when exporting to the 3ds format, I had to break down the faces into sections in order to preserve them.

Here's the description straight from MaxOOFUtility readme...
Quote:
Description
-----------
Max OOF Utility is the companion program for 3dsGen. After you convert your
OOF file to 3DS and import into 3dsMax. This utility will help you in finding
and creating materials, colorizing the model, welding the redundant vertices
created by 3dsgen and assigning special properties to sub-models.


And the usage...
Quote:
Usage
-----
The program has several functions. All of which rely on a model being loaded,
and collapsed to Editable Mesh(s).

Weld Redundant Verts: This welds all of the redundant vertices that are created
by 3dsgen as a kludge to preserve texture mapping. This function operates on
all Meshes in the scene.

Colorize, B/W Colorize: Colorizes each sub-model(object) randomly. This operates
on all Meshes in the scene.

Create Materials: Attempts to locate textures of type TGA used by the model and
create materials in the Material slot chosen. It will also remove textures from
those submodels that are of type GPNT,GRND,ATCH,SPCL and glows. This function
operates on the currently selected Mesh(s).

Wildcard Material Search: Uses <filename>*.tga search name when searching for
textures and can save you from having to manually locate the file.

Set Property: This will set the Custom Propety attribute of the Mesh(s) to the
desired property.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 5:27 pm 
Offline
DBB Ace
DBB Ace
User avatar

Joined: Wed Sep 05, 2007 6:03 am
Posts: 151
Website: http://3d-get.de/metalbeast
Location: http://3d-get.de/metalbeast
The problem is, that OOF format is crap, So 3dsgen is just doing what it can do, I think supersheep did his best, but OOF is using non-standard modeling convetions. It is bad documented and without usable tools.

So converting meshes from OOF to any standard format is not possible without losses. And in other direction it is not better.

It is the reason, why we stopped to support OOF in d2x-xl and changed to ASE.

Like just wrote, you have to weld all vertices in the mesh in order to become usable model.

But all UVW mappings are than gone, so you must do new work on UVW-mappings and texturing.

Is is so big amount of work, so I think it is better to make the model new from scratch, using converted model as reference.

EDIT: supersheep was first ;)
Anyway, using 3dsgen or other tool converted meshes from OOF, means many work for you :D


Top
   
 
 Post subject: Re:
PostPosted: Sun Feb 24, 2008 5:40 pm 
Offline
DBB Benefactor
DBB Benefactor
User avatar

Joined: Sun Jun 03, 2001 2:01 am
Posts: 935
Location: Illinois
zombie999 wrote:
The problem is, that OOF format is crap, So 3dsgen is just doing what it can do, I think supersheep did his best, but OOF is using non-standard modeling convetions. It is bad documented and without usable tools.

So converting meshes from OOF to any standard format is not possible without losses. And in other direction it is not better.

It is the reason, why we stopped to support OOF in d2x-xl and changed to ASE.

Like just wrote, you have to weld all vertices in the mesh in order to become usable model.

But all UVW mappings are than gone, so you must do new work on UVW-mappings and texturing.

Is is so big amount of work, so I think it is better to make the model new from scratch, using converted model as reference.

EDIT: supersheep was first ;)
Anyway, using 3dsgen converted meshes means many work for you :D


That is not what I said and you still seem to misunderstand. Max OOF Utility welds the verts for you. The UVW mapping is not lost. It would be if the model were not broken apart by 3dsgen.

I took the Hellion and converted it from an OOF to 3DS, imported into 3dsmax, and had a fully textured, exportable model with all keyframes in under 5 minutes. How is that a lot of work?


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 5:47 pm 
Offline
DBB Ace
DBB Ace
User avatar

Joined: Wed Sep 05, 2007 6:03 am
Posts: 151
Website: http://3d-get.de/metalbeast
Location: http://3d-get.de/metalbeast
Ok, if this way works and the mesh is clean with proper UVW maps, than it may be a solution for you jshaner.

But anyway I'm lucky,
I haven't to work with OOF models anymore :D

And I don't like converted models, I prefer to build them myself :D


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 7:55 pm 
Offline
DBB Benefactor
DBB Benefactor
User avatar

Joined: Tue Aug 24, 1999 2:01 am
Posts: 4193
ICQ: 6955979
Website: http://bubbalou.event3dstudios.com
Location: Dallas Texas USA
wow - sounds like someone who never used Super Sheep's tool in the first place, has alot to say about nothing

bad form

bad attitude

zombie999

_________________

I seem to have a better workout dodging your stupidity than attempting to grasp the weight of your intelligence.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 7:56 pm 
Offline
DBB Admiral
DBB Admiral
User avatar

Joined: Tue Dec 21, 2004 10:08 am
Posts: 1074
Location: Minnesota, USA
I dunno how to get the keyframes (due to my version of 3ds Max not being compatible with the OOF utility (I assume), but I converted over the GX model from the D4 section of PD and it textured perfectly, no issues.


Top
   
 
 Post subject: Re:
PostPosted: Sun Feb 24, 2008 8:03 pm 
Offline
DBB Ace
DBB Ace
User avatar

Joined: Wed Sep 05, 2007 6:03 am
Posts: 151
Website: http://3d-get.de/metalbeast
Location: http://3d-get.de/metalbeast
BUBBALOU wrote:
wow - sounds like someone who never used Super Sheep's tool in the first place, has alot to say about nothing

bad form

bad attitude

zombie999


I used it, just don't like it,
the Max OOF Utility did'nt work for me.

And I don't like your comment.
Is just your evidence of incapacity.
Go and spam to another thread.


Top
   
 
 Post subject: Re:
PostPosted: Sun Feb 24, 2008 9:12 pm 
Offline
DBB Benefactor
DBB Benefactor
User avatar

Joined: Sun Jun 03, 2001 2:01 am
Posts: 935
Location: Illinois
d3jake wrote:
I dunno how to get the keyframes (due to my version of 3ds Max not being compatible with the OOF utility (I assume), but I converted over the GX model from the D4 section of PD and it textured perfectly, no issues.


I wrote the utility for 3dsmax 3.0. I don't have more recent versions of 3dsmax so I cannot attest to it's working in later versions.

zombie999 wrote:
I used it, just don't like it,
the Max OOF Utility did'nt work for me.


I can understand the reason you don't like it however it does indeed work, just not on your version of 3dsmax. I do not have time to do updates and can not afford to get later versions of max, but the "source code" is included.

Your view of the software is similar to thinking software is a POS because it won't work on later versions of windows. I think that is why Bubba was coming down on you.

You are free to use it or not as you see fit, but the utility does work on the versions of max that it was written for, and I stand by my software.


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 9:14 pm 
Offline
DBB Benefactor
DBB Benefactor
User avatar

Joined: Sun Jun 03, 2001 2:01 am
Posts: 935
Location: Illinois
btw...for anyone interested in making OOF Utility compatible with later versions of max, the .ms file includes the source.

For those who don't have it, I will post it here as well.

Code:
-- Max OOF Utility
-- by Robert 'SuperSheep' Piontek

global myImage  = \"selfloat.bmp\"
global myImageA = \"selfloat_a.bmp\"
global myLogo   = \"maxooflogo.bmp\"
global curPath  = \"C:\\\\\"
global wildSearch = true
global bwcolor = 0
global props    = #(\"None\", \                    \"Facing\", \                    \"Rotate\", \                    \"Turret/FOV\", \                    \"Glow/Thruster\", \                    \"Custom(Logo)\", \                    \"Shell\", \                    \"FrontFace\", \                    \"Jitter\", \                    \"Viewer\", \                    \"Monitor(01-08)\", \                    \"Layer\")
global monitors = #(\"Monitor01 - Left HUD Display\", \                    \"Monitor02 - Ship Strength\", \                    \"Monitor03 - Right HUD Display\", \                    \"Monitor04 - Left Energy Indicator\", \                    \"Monitor05 - Right Energy Indicator\", \                    \"Monitor06 - Shields\", \                    \"Monitor07 - Afterburn Indicator\", \                    \"Monitor08 - Unknown\")
global curPropShown = 1
global winSize = [250,440]
global mtlSlot = 1
-- Property initial/save states
struct s_fov  (fov,spr,rt)
struct s_glow (color,radius)
global prop_rotate  = 1.0
global prop_monitor = 1
global prop_fov     = s_fov  fov:90.0 spr:1.0 rt:0.0
global prop_glow    = s_glow color:blue radius:1.0

-- Takes a string with single \\'s and returns one with \\\\'s
fn doubleSlash str = (for i = str.count to 1 by -1 do (if str[i] == \"\\\\\" then str = replace str i 1 \"\\\\\\\\\"); return str)
-- Takes a string with \\\\'s and returns one with \\'s
fn singleSlash str = (for i = str.count-1 to 1 by -1 do (if str[i] == \"\\\\\" and str[i+1] == \"\\\\\" then str = replace str i 1 \"\"); return str)
-- Removes file extension from str
fn removeExt str = (for i = str.count-1 to 1 by -1 do (if str[i] == \".\" then (str = replace str i 4 \"\"; exit));   return str)

-- Rename diffuse texture to long name
fn renameDiffuse mat =
(
   dif_map = mat.diffuseMap

   -- Have we already got a fully qualified path name and file exists?
   f = getFilenamePath(dif_map.filename)
   if matchPattern f pattern:\"*\\\\*\" then (f = getFiles(dif_map.filename); if f.count == 1 then return 0)

   -- Store as much of the file name as we can
   search_name = curPath + mat.name

   -- Can we find this name?
   if mat.name.count<17 then
   (
      f = getFiles(search_name + \".tga\")
      if f.count == 1 then (dif_map.name = mat.name; dif_map.filename = singleSlash(f[1]); return 0)
   )

   -- Can we find the name with a wildcard search?
   if wildSearch == true then
   (
      f = getFiles(search_name + \"*.tga\")
      if f.count == 1 then
      (
         -- We found it, so exit
         mat.name         = removeExt(filenameFromPath(f[1]))
         dif_map.name     = mat.name
         dif_map.filename = singleSlash(f[1])
         return 0
      )
   )

   -- We now need to prompt user to find texture
   f = getOpenFileName filename:(search_name + \".tga\") caption:(\"Missing texture: \" + mat.name) types:\"TGA Files(*.TGA)|*.tga|All files(*.*)|*.*|\"
   if f != undefined then
   (
      -- Store new map and material name and update Current Path
      mat.name         = removeExt(filenameFromPath(f))
      dif_map.name     = mat.name
      dif_map.filename = singleSlash(f)
      curPath          = getFileNamePath(f)
   )
)

-- Renames all bitmaps on materials
fn renameMaterials =
(
   if ClassOf meditMaterials[mtlSlot] == Standard then
      if ClassOf meditMaterials[mtlSlot].diffuseMap == BitmapTexture then
         renameDiffuse meditMaterials[mtlSlot]
   if ClassOf meditMaterials[mtlSlot] == MultiMaterial then
   (
      for i = 1 to meditMaterials[mtlSlot].material.count do
      (
         if ClassOf meditMaterials[mtlSlot].material[i] == Standard then
            if ClassOf meditMaterials[mtlSlot].material[i].diffuseMap == BitmapTexture then
               renameDiffuse meditMaterials[mtlSlot].material[i]
      )
   )
)

-- Create Material Editor materials from objects in scene
fn createMaterialsFromObjects =
(
   if selection.count == 0 then (messageBox \"No objects selected!\"; return 0)
   curMatId = 0
   matnames = #()
   materials = #()
   -- Create a material list from objects
   for i = 1 to selection.count do
   (
      o = selection[i]
      if ClassOf o == Editable_Mesh then
      (
         mat = o.material
         if mat == undefined then continue
         if ClassOf mat == Standard then
         (
            if ClassOf mat.diffuseMap != BitmapTexture then (o.material = undefined; continue)
         )
         for curFace = 1 to o.numFaces do
         (
            matId = getFaceMatId o curFace
            local submat = mat
            if (ClassOf mat==MultiMaterial) and (matId>0) and (matid<=mat.material.count) then submat = mat.material[matId]
            local index = finditem matnames submat.name
            if index == 0 then
            (
               append matnames submat.name
               append materials submat
               curMatId += 1
               setFaceMatId o curFace curMatId
            )
            else setFaceMatId o curFace index
         )
      )
      update o
   )
   -- Create materials
   if curMatId == 1 then
   (
      setMeditMaterial (mtlSlot) materials[1]
      -- Show texture in viewport
      if ClassOf meditMaterials[mtlSlot].diffuseMap == BitmapTexture then
         showTextureMap meditMaterials[mtlSlot] meditMaterials[mtlSlot].diffuseMap on
   )
   else if curMatId > 1 then
   (
      mat = multiMaterial numsubs:curMatId name:(\"Material #\" + (mtlSlot as string))
      mat.materialList = materials
      mat.names = matnames
      if mat != undefined then
      (
         setMeditMaterial (mtlSlot) mat
         -- Show texture in viewport
         for i = 1 to curMatId do
         (
            if ClassOf meditMaterials[mtlSlot].material[i].diffuseMap == BitmapTexture then
               showTextureMap meditMaterials[mtlSlot].material[i] meditMaterials[mtlSlot].material[i].diffuseMap on
         )
      )
   )
   -- Rename the materials
   renameMaterials()
)

-- Assign material to selected objects
fn assignMaterials =
(
   -- Assign material to all objects
   for i = 1 to selection.count do
   (
      o = selection[i]
      if ClassOf o == Editable_Mesh and o.material != undefined then
      (
         o.material = undefined
         update o
         if ((findString o.name \"$attach\")==1) or ((findString o.name \"$normal\")==1) or \            ((findString o.name \"$gun\")   ==1) or ((findString o.name \"$ground\")==1) or \            ((findString o.name \"$dummy\")==1)  or ((findString (GetUserPropBuffer o) \"$glow\")==1) then continue
         o.material = meditMaterials[mtlSlot];
         update o
      )
   )
   redrawViews()
)

-- Welds all redundant vertices
fn weldAllVerts o=
(
   j = o.numVerts
   k = j
   tmppos = o.verts[j].pos
   do
   (
      if o.verts[j].pos!=tmppos then
      (
         if k>(j+1) then (setVertSelection o #{(j+1)..(k)}; meshOps.weld o; deselect o.selectedVerts)
         tmppos = o.verts[j].pos
         k = j
      )
   ) while (j-=1) > 0
   -- Do last set of vertices
   if k>(j+1) then (setVertSelection o #{1..(k)}; meshOps.weld o; deselect o.selectedVerts)
)

-- Colorize Model
fn colorize style =
(
   for i = 1 to objects.count do
   (
      o = objects[i]
      if ClassOf o == Editable_Mesh then
      (
         if      (findString o.name \"$attach\") == 1 then o.wirecolor = orange
         else if (findString o.name \"$normal\") == 1 then o.wirecolor = color 255 0 255
         else if   (findString o.name \"$gun\")    == 1 then o.wirecolor = red
         else if (findString o.name \"$ground\") == 1 then o.wirecolor = green
         else if (findString o.name \"$dummy\")  == 1 then o.wirecolor = yellow
         else if ((findString (GetUserPropBuffer o) \"$glow\")==1) then continue
         else if (style == 2) then
         (
            vpcolor = getVPortBGColor()
            vpgray  = (vpcolor.r + vpcolor.g + vpcolor.b)/3
            if (bwcolor += 16) > 255 then bwcolor = 0
            if (bwcolor > vpgray-25) and (bwcolor < vpgray+25) then bwcolor = vpgray+25
            if bwcolor>255 then bwcolor = 255
            o.wireColor = color bwcolor bwcolor bwcolor
         )
         else
         (
            vpcolor = getVPortBGColor()
            mycolor = color (random 0 196) (random 0 196) (random 0 196)
            if (mycolor.r>vpcolor.r-25) and (mycolor.r<vpcolor.r+25) then mycolor.r = vpcolor.r-25
            if (mycolor.g>vpcolor.g-25) and (mycolor.g<vpcolor.g+25) then mycolor.g = vpcolor.g-25
            if (mycolor.b>vpcolor.b-25) and (mycolor.b<vpcolor.b+25) then mycolor.b = vpcolor.b-25
            if mycolor.r<0 then mycolor.r=0
            if mycolor.g<0 then mycolor.g=0
            if mycolor.b<0 then mycolor.b=0
            o.wirecolor = mycolor
         )
      )
      update o
   )
)

-- Set Custom property
fn SetCustomProperty type =
(
   numProps = 0
   prop = \"None\"
   if selection.count == 0 then return 0
   for i = 1 to selection.count do
   (
      o = selection[i]
      if ClassOf o == Editable_Mesh then
      (
         sfov  = stringStream \"\"
         sglow = stringStream \"\"
         format \"%, %, %\" prop_fov.fov prop_fov.spr prop_fov.rt to:sfov
         format \"%, %, %, %\" (prop_glow.color.red/255) (prop_glow.color.green/255) (prop_glow.color.blue/255) prop_glow.radius to:sglow
         SetUserPropBuffer o \"\"
         if ((findString o.name \"$attach\")==1) or ((findString o.name \"$normal\")==1) or \            ((findString o.name \"$gun\")   ==1) or ((findString o.name \"$ground\")==1) or \            ((findString o.name \"$dummy\")==1) then continue
         case type of
         (
            2:  SetUserPropBuffer o \"$facing\"
            3:  SetUserProp       o \"$rotate\" prop_rotate
            4:  SetUserProp       o \"$fov\"    (sfov as string)
            5: (SetUserProp       o \"$glow\"   (sglow as string); o.wirecolor = prop_glow.color)
            6:  SetUserPropBuffer o \"$custom\"
            7:  SetUserPropBuffer o \"$shell\"
            8:  SetUserPropBuffer o \"$frontface\"
            9:  SetUserPropBuffer o \"$jitter\"
            10: SetUserPropBuffer o \"$viewer\"
            11: SetUserPropBuffer o (\"$monitor0\" + prop_monitor as string)
            12: SetUserPropBuffer o \"$layer\"
         )
         prop = GetUserPropBuffer o
         if prop == \"\" then prop = \"None\"
         numProps += 1
      )
   )
   if numProps>0 then messageBox (\"Property \"+prop+\" set for \"+ numProps as string + \" object(s)\")
)


-- ******************** Floating Rollout window ********************
--

-- ********** Sub-Object(s) Property rollouts **********
--
rollout Prop1 \"None\"   (label lab01 \"Sub-Object(s) has No properties.\"   align:#left)
rollout Prop2 \"Facing\" (label lab02 \"Sub-Object(s) always Faces player.\" align:#left)
rollout Prop3 \"Rotate\"
(
   label   lab03     \"Sub-Object(s) is a Rotator.\" align:#left
   spinner spnrotate \"Rotates once every: \"        align:#left across:2 fieldWidth:40 range:[0.1,999,prop_rotate]
   label   lab04     \" seconds\"                    align:#right
   on spnrotate changed val do (prop_rotate = val)
)
rollout Prop4 \"Turret/FOV\"
(
   label   lab05    \"Sub-Object(s) is a Turret.\" align:#left
   spinner spnfov   \"Field of View: \"            align:#right offset:[-30,2]  fieldWidth:40 range:[0.0,360.0,prop_fov.fov]
   spinner spnspr   \"Seconds per Rotation: \"     align:#right offset:[-30,-3] fieldWidth:40 range:[0.1,60.0,prop_fov.spr]
   spinner spnrt    \"Reaction Time: \"            align:#right offset:[-30,-3] fieldWidth:40 range:[0.0,10.0,prop_fov.rt]
   on spnfov changed val do (prop_fov.fov = val)
   on spnspr changed val do (prop_fov.spr = val)
   on spnrt  changed val do (prop_fov.rt  = val)
)
rollout Prop5 \"Glow/Thruster\"
(
   label       lab06         \"Sub-Object(s) is a Glow/Thruster.\"  align:#left
   colorpicker cpglowcolor   \"Glow Color: \"                       align:#left  across:2 color:prop_glow.color
   spinner     spnglowradius \"Radius: \"                           align:#right offset:[0,4] range:[0.0,999.9,prop_glow.radius]
   on cpglowcolor   changed val do (prop_glow.color  = val)
   on spnglowradius changed val do (prop_glow.radius = val)
)
rollout Prop6  \"Custom\"    (label lab07 \"Sub-Object(s) has Custom texture/color.\" align:#left)
rollout Prop7  \"Shell\"     (label lab08 \"Sub-Object(s) is a Door Shell.\"          align:#left)
rollout Prop8  \"FrontFace\" (label lab09 \"Sub-Object(s) is a Door Front.\"          align:#left)
rollout Prop9  \"Jitter\"    (label lab10 \"Sub-Object(s) Jitters.\"                  align:#left)
rollout Prop10 \"Viewer\"    (label lab11 \"Sub-Object(s) is Viewer.\"                align:#left)
rollout Prop11 \"Monitor(01-08)\"
(
   label        lab12 \"Sub-Object(s) is a Monitor.\" align:#left
   dropdownlist dlMonitor                           align:#left width:(winSize.x-54) items:monitors selection:prop_monitor
   on dlMonitor selected sel do (prop_monitor = sel)
)
rollout Prop12 \"Layer\" (label lab13 \"Sub-Object(s) is drawn after model.\" align:#left)


-- ********** Main Rollout(s) **********
--
-- About rollout
rollout main \"About\"
(
   label  label01 \"Max OOF Utility v1.0\"
   bitmap logo width:132 height:68 fileName:myLogo
   label  label02 \"by Rob 'SuperSheep' Piontek\"
   label  label03 \"See Readme.txt for instructions\"
)
-- Object rollout
rollout model \"Model\"
(
   group \"Mesh\"
   (
      button       btnWeldVerts  \"Weld Redundant Verts\" align:#left  width:(winSize.x-54)
      progressbar  pbProgress                           align:#left  width:(winSize.x-54) height:8 value:0 color:red
      button       btnColorize   \"Colorize\"             align:#left  width:((winSize.x-59)/2) across:2
      button       btnColorizeBW \"B/W Colorize\"         align:#right width:((winSize.x-59)/2)
   )
   group \"Materials\"
   (
      button   btnSelFloater \"+\"                       align:#left  width:20 height:20 across:3 toolTip:\"Select object(s)\" images:#(myImage,myImageA,2,1,1,2,2)
      button   btnCreateMat \"Create Materials\"         align:#left  pos:[(btnSelFloater.pos.x+30),(btnSelFloater.pos.y)] width:((winSize.x-70)*.5)
      spinner  spnMatSlot   \"Slot: \"                   align:#right fieldWidth:30 range:[1,24,(mtlSlot)] type:#integer offset:[0,4]
      checkBox cbWildSearch \"Wildcard Material Search\" align:#left  checked:wildSearch
   )
   -- Fix 3DS file button pressed
   on btnWeldVerts pressed do
   (
      setCommandPanelTaskMode mode:#modify
      try
      (
         disableSceneRedraw()
         undo off
         (
            for i = 1 to objects.count do
            (
               pbProgress.value = 100*i/objects.count
               obj = objects[i]
               if ClassOf obj == Editable_Mesh then
               (
                  modPanel.setCurrentObject obj
                  subObjectLevel = 1
                  weldAllVerts(obj)
                  subObjectLevel = 0
                  update obj
                  clearSelection()
               )
            )
         )
         enableSceneRedraw()
         pbProgress.value = 0
      )
      catch
      (
         enableSceneRedraw()
         pbProgress.value = 0
         throw()
      )
      redrawViews()
   )
   on btnColorize   pressed          do (colorize 1)
   on btnColorizeBW pressed          do (colorize 2)
   on btnSelFloater pressed          do (max selection floater)
   on btnCreateMat  pressed          do (createMaterialsFromObjects(); assignMaterials())
   on spnMatSlot    changed val      do (mtlSlot = val)
   on cbWildcard    changed theState do (wildSearch = theState)
)

-- Sub-Object rollout
rollout submodel \"Sub Model\"
(
   button       btnSelFloater \"+\"             align:#left  width:20 height:20 across:3 toolTip:\"Select object(s)\" images:#(myImage,myImageA,2,1,1,2,2)
   button       btnSetProp    \"Set Property:\" align:#left  pos:[(btnSelFloater.pos.x+30),(btnSelFloater.pos.y)] width:((winSize.x-100)*.5)
   dropdownlist dlProperty                    align:#right width:((winSize.x-75)*.5) height:13 items:props selection:1

   on dlProperty selected sel do
   (
      if sel!=curPropShown then
      (
         cp = (curPropShown as string)
         execute(\"removerollout Prop\"+cp+\" MaxOOFUtility\")
         execute(\"addrollout Prop\"+(sel as string)+\" MaxOOFUtility\")
         curPropShown = sel
      )
   )
   on btnSetProp    pressed do (SetCustomProperty curPropShown)
   on btnSelFloater pressed do (max selection floater)
)

-- Create Floating Rollout
file = getFiles(myImage);  if file.count == 1 then myImage  = file[1]
file = getFiles(myImageA); if file.count == 1 then myImageA = file[1]
file = getFiles(myLogo);   if file.count == 1 then myLogo   = file[1]
MaxOOFUtility = newrolloutfloater \"MaxOOFUtility\" (winSize.x) (winSize.y)
addrollout main     MaxOOFUtility
addrollout model    MaxOOFUtility
addrollout submodel MaxOOFUtility
addrollout Prop1    MaxOOFUtility


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 9:16 pm 
Offline
DBB Ace
DBB Ace

Joined: Sat Feb 23, 2008 4:16 pm
Posts: 124
Well, i do agree that the OOF format is painful and outdated, but it is something i must bear with nonetheless. It isn't that bad, it just needs more attention than a more common format. Maybe my example was poor, i don't know. Even then, i could use another example with dif. formats involved and get the same error. I can take the ASE pyro from Diedel's site and get the same thing if i do an SDL check and export it to my game engine. Not to say it is a crappy model, (it is beautiful and fits what it was intended for) but i don't know where to go. So i guess ignore what i had to say about .OOF and see this: I get the same errors with any model, whether it be downloaded or hand made (Yes, i also prefer to hand make things). So really, what is causeing my problems? My game engine being nit picky?


-and textures aren't a major concern right now. I am trying to get a decent model working (not to say the ones i have tried are not, they just don't suit my uses). So any help on dif. formats and such would be appreciated!


Top
   
 
 Post subject:
PostPosted: Sun Feb 24, 2008 9:24 pm 
Offline
DBB Ace
DBB Ace
User avatar

Joined: Wed Sep 05, 2007 6:03 am
Posts: 151
Website: http://3d-get.de/metalbeast
Location: http://3d-get.de/metalbeast
If you have problems with any models, than it's problem of your engine, which probably needs a special kind of models.

So you should read in the engine-documentation, what kind of models are supported.


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 1:50 am 
Offline
DBB Ace
DBB Ace

Joined: Tue Jan 24, 2006 11:15 am
Posts: 23
Website: http://www.avenger.sk
Sorry for OT, but is there a way how to get the level geometry imported into 3dsmax ? Or at least into ASE format so I could import it into my engine/editor (and put Radiosity lights there).

_________________
www.avenger.sk

VladR Games


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 1:57 am 
Offline
D2X Master
D2X Master
User avatar

Joined: Thu Nov 05, 1998 12:01 pm
Posts: 5278
Website: http://www.descent2.de
I will write an ASE exporter for Descent models and levels, but that will take a while. We will need it for the port to the new engine anyway - I want the entire D1+D2 level base available for it. ;)


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 2:09 am 
Offline
DBB Ace
DBB Ace

Joined: Tue Jan 24, 2006 11:15 am
Posts: 23
Website: http://www.avenger.sk
Yeah, that would be definitely great. But I can understand that not being a priority right now.
I believe some long time ago I`ve found some docs about the internal format of the level geometry, there was just some issue with extracting the level.

Writing an importer shouldn`t be a matter of more than 4 hrs at most, i.e. one evening, as long as the documentation is full and format doesn`t contain last-minute hacks.

Any quick pointers ?

_________________
www.avenger.sk

VladR Games


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 5:23 am 
Offline
D2X Master
D2X Master
User avatar

Joined: Thu Nov 05, 1998 12:01 pm
Posts: 5278
Website: http://www.descent2.de
Supersheep,

FYI: OOF tool seems to mess up face normals, at least that's MetalBeast's experience with it. Not that we'd need it since introduction of ASE support in D2X-XL, but maybe you want to look into it.


Top
   
 
 Post subject: Re:
PostPosted: Mon Feb 25, 2008 7:18 am 
Offline
DBB Benefactor
DBB Benefactor
User avatar

Joined: Tue Aug 24, 1999 2:01 am
Posts: 4193
ICQ: 6955979
Website: http://bubbalou.event3dstudios.com
Location: Dallas Texas USA
zombie999 wrote:
I used it, just don't like it,
the Max OOF Utility did'nt work for me.

And I don't like your comment.
Is just your evidence of incapacity.
Go and spam to another thread.


I have no issues modeling for any engine or with any program and or plugin!

Your lack of knowledge and experience is showing...

Back On Topic
-------------------

You can Use Intel Multires© to at least reduce your model to and acceptable level but the finishing touches will have to be done by hand

_________________

I seem to have a better workout dodging your stupidity than attempting to grasp the weight of your intelligence.


Top
   
 
 Post subject: Re:
PostPosted: Mon Feb 25, 2008 7:30 am 
Offline
D2X Master
D2X Master
User avatar

Joined: Thu Nov 05, 1998 12:01 pm
Posts: 5278
Website: http://www.descent2.de
BUBBALOU wrote:
wow - sounds like someone who never used Super Sheep's tool in the first place, has alot to say about nothing

bad form

bad attitude

zombie999

Bubbalou,

until you showed up here, Zombie and S-Sheep were having a well behaved and conducted conversation - no insults or hard feelings involved as far as I can see.

But apparently it is your nature to crap into every thread you come across.

If this was my forum, you'd have gotten the boot already.


Top
   
 
 Post subject: Re:
PostPosted: Mon Feb 25, 2008 8:38 am 
Offline
DBB Ace
DBB Ace
User avatar

Joined: Wed Sep 05, 2007 6:03 am
Posts: 151
Website: http://3d-get.de/metalbeast
Location: http://3d-get.de/metalbeast
BUBBALOU wrote:

I have no issues modeling for any engine or with any program and or plugin!

Your lack of knowledge and experience is showing...



Dude, you are just poor spammer, nothing more.
Big mouth nothing behind. ;)


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 9:21 am 
Offline
DBB Ace
DBB Ace

Joined: Sat Feb 23, 2008 4:16 pm
Posts: 124
You know, i have to admit that i am a rookie at modeling and things involved with that.

I will make a video of what i am doing on rapidshare, so you all can see what i am facing, so there is no more of this controversy. (poor spelling, i know)

it (the game engine) basically supports any format that 3ds max can read, but it just has to be clean. EDIT:has to be exported, but that is not important. I only started Max a couple months ago. I know i am not too good at it, and that is why i am asking for help.

Everybody's models i have tried are very detailed and good, i just can't use them for what i am doing.

I would consider the ASE format, but i can't find a good free importer for max.

i have to go, so help would be appreciated.
i will inform you all about my rapidshare video later sometime.


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 3:16 pm 
Offline
DBB Friend
DBB Friend
User avatar

Joined: Fri Apr 23, 2004 7:27 am
Posts: 1604
ICQ: 243831557
Yahoo Messenger: AusRED5
AOL: AuzzieGeorge
Location: Adelaide, South Australia
People, don't feed the trolls!

Ignore the comments and move on or I will start editing and removing posts.

So far the comments aren't that bad, so keep it civil please. ;)


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 7:19 pm 
Offline
DBB Ace
DBB Ace

Joined: Sat Feb 23, 2008 4:16 pm
Posts: 124
I don't mean to cause controversy...i just need assistance.

I have been very busy lately, i will get my video up asap. :idea:


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 7:27 pm 
Offline
DBB Benefactor
DBB Benefactor
User avatar

Joined: Tue Aug 24, 1999 2:01 am
Posts: 4193
ICQ: 6955979
Website: http://bubbalou.event3dstudios.com
Location: Dallas Texas USA
jshaner just p/m me if you need any assistance without biased opinions or bad attitudes from the peanut gallery

you should of posted this in the ptmc gallery anyways

EDIT By MOD
Link removed.
We could link to some of your own bad attitude as well, but no need to continue the trolling in here.

_________________

I seem to have a better workout dodging your stupidity than attempting to grasp the weight of your intelligence.


Top
   
 
 Post subject:
PostPosted: Mon Feb 25, 2008 8:05 pm 
Offline
DBB Friend
DBB Friend
User avatar

Joined: Fri Apr 23, 2004 7:27 am
Posts: 1604
ICQ: 243831557
Yahoo Messenger: AusRED5
AOL: AuzzieGeorge
Location: Adelaide, South Australia
Ok.

Lets leave it at that. :roll:


Top
   
 
Display posts from previous:  Sort by  
Post new topic  This topic is locked, you cannot edit posts or make further replies.  [ 33 posts ] 

All times are UTC-06:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron



Descent'rs have piloted these pages
 
The layout and contents contained within this site are © DescentBB.net 1997-2006.
Descent, Descent II are © Parallax Software Corporation.
Descent III is Outrage Entertainment.
Descent is a Trademark of Interplay Productions.

Miner Wars™ is trademark of Keen Software House s. r. o.
.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group