How to have less faces in 3DS Max
Moderators: Grendel, Aus-RED-5
How to have less faces in 3DS Max
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!
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.
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
VladR Games
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
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.
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.
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.
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.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
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.
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.
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.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
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.
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.
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?
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?
- SuperSheep
- DBB Benefactor
- Posts: 935
- Joined: Sun Jun 03, 2001 2:01 am
- Location: Illinois
Re:
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.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.
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...
And the usage...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.
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.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
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
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
- SuperSheep
- DBB Benefactor
- Posts: 935
- Joined: Sun Jun 03, 2001 2:01 am
- Location: Illinois
Re:
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.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
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?
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
Re:
I used it, just don't like it,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
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.
- SuperSheep
- DBB Benefactor
- Posts: 935
- Joined: Sun Jun 03, 2001 2:01 am
- Location: Illinois
Re:
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.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 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.zombie999 wrote:I used it, just don't like it,
the Max OOF Utility did'nt work for me.
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.
- SuperSheep
- DBB Benefactor
- Posts: 935
- Joined: Sun Jun 03, 2001 2:01 am
- 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.
For those who don't have it, I will post it here as well.
Code: Select all
-- 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
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!
-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!
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
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
VladR Games
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 ?
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
VladR Games
- BUBBALOU
- DBB Benefactor
- Posts: 4198
- Joined: Tue Aug 24, 1999 2:01 am
- Location: Dallas Texas USA
- Contact:
Re:
I have no issues modeling for any engine or with any program and or plugin!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.
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.
Re:
Bubbalou,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
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.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
Re:
Dude, you are just poor spammer, nothing more.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...
Big mouth nothing behind.
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.
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.
- BUBBALOU
- DBB Benefactor
- Posts: 4198
- Joined: Tue Aug 24, 1999 2:01 am
- Location: Dallas Texas USA
- Contact:
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.
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.