Any news from the non-working files front? A missing comma or something? I tried to look what could be the problem, but MAX scripts are pretty much all gibberish to me.
Any news from the non-working files front? A missing comma or something? I tried to look what could be the problem, but MAX scripts are pretty much all gibberish to me.
Fixed: https://rapidshare.com/files/1257225485/SMImport.ms (replace Scripts/SMImport/SMimport.ms)
Forgive me for being a little clueless, but I've seen this thread every day since it was made, and I have no idea what it's for xD. I suppose its some sort of mod tools but how would they work?
Good point.Added a short description for each tool in the first post. Basically you can use the smoppc program to unpack files from game's OPPC archives and if you happen to have 3D Studio MAX, you can also import some models from DCM files. Not much functionality atm but the game is not even released yet.
![]()
uncle_anaesthes
Yeah, tried that and all I got was a quick glimpse of the Dos window and then nada...
Santos
Hi Santos, thanks for this awesome tool! Truth be told, I looked at the readme file and it made no sense to me on how to acutally use it, all I got out of it was how [src] and [dest] should work.... Maybe I'm not the kind of person to be using this tool.
Should this work on other .oppc files or just from Space Marine?
Thanks for your responses!
#57
Have you checked your ..\steamapps\common\warhammer 40,000 space marine demo\data\chunks folder (from which, in all evidence, you've drag'n'dropped the OPPCs) ? Now you should see one or several folders named accordingly with the oppc files you've thusly decompiled.Originally Posted by SMTools' readme
We look to the heavens so that one day our children may look back towards home.
Ok, let me explain this in more detail than. Space Marine demo assets (textures, models, etc.) are stored within archive files with OPPC extension. These files can be found in data/chunks and data/packeges directories under your Space Marine demo path (steamapps\common\warhammer 40,000 space marine demo). In essence OPPC files are similar to ZIP or RAR archives. Unfortunately their file format is not readable by any existing tool, so I prepared a simple command line program (smoppc) which can extract data from OPPC archives.
To run the program open your Windows prompt (Start => Run => 'cmd') and navigate to directory where smoppc.exe can be found. Program reads two arguments from command line (src and dest), both are optional. With src you can specify which OPPC file to unpack or you can point to directory with OPPC files inside, if you want to unpack more than one file at once. Dest will tell the program where to put extracted files.
Examples:
> smoppc
Unpacks all OPPC files in current directory to the same directory (folder is created for each unpacked archive).
> smoppc c:\space_marine_demo\data\packages
Unpacks all OPPC files from packages directory into current directory (where smoppc.exe was called from).
> smoppc c:\space_marine_demo\data\packages\test.oppc
Unpacks single file called test.oppc into current directory.
> smoppc c:\space_marine_demo\data\packages c:\temp
Unpacks all OPPC files from packages directory into c:\temp.
> smoppc c:\space_marine_demo\data\packages\test.oppc c:\temp
Unpacks test.oppc file from packages directory into c:\temp
Pressing Enter will run the program. Program will print out paths of all unpacked files. When command prompt appears again it means extraction is done and you can look for extracted files in whatever directory you provided as dest argument.
Hope this helps...TIP: The simplest way you can use the program is to copy it into data/chunks or data/packages directory and just run it with double click. Program will unpack all OPPC files found in this directories at once.![]()
It works! Thank you for the great explanation, Santos! It all makes sense now!![]()
I came here because of a link to the reskins by NastyNoodle and now I saw this. I'm realy astounded by what your achieving here.
The only probleme is I'm not using 3dsmax so I can't use your import script. It would be pretty cool to have a stand alone App to create .obj; .3ds or .fbx files out of the data.
And you guys are realy F***ing fast considering the game isn't actually out yet.
big props to you Santos
I may be mistaken but i don't belive our freindly tool creator is that skilled a programmer, once he does a write up on the "format" (hope thats the right word), somone else with the coding knowlage will come along and do he work there. Don't look at me for it though, don't know a sasuage about programming, would like to learn but...The only probleme is I'm not using 3dsmax so I can't use your import script. It would be pretty cool to have a stand alone App to create .obj; .3ds or .fbx files out of the data.
I don't know what i'm talking about, ignore me.
Thousands of years ago, Egyptians worshipped what would become our ordinary housecat. The cats have never forgotten this.
![]()
#62
I am able to write/read/edit attr_pc (BAF) files but there is no point in releasing my converter. It is utterly useless because Space Marine does not load files from outside OPPC archives. We need to be able write OPPC archives in order to mod the game.Originally Posted by Santos
@Chisui
I may do something like that in the future.
@Carl
To put it in your own words: I don't know what i'm talking about, ignore me.
@Copernius
Well, that's a step forward at least.Try looking at OPPC format yourself. Maybe you will succeed in figuring out the missing bits.
#64
I'm currently working on it. Looks like a hash (or rather: multiple hashes) or something along these lines.
Looks way to big for a single hash. It's different in every file though, so it might be some way of integrity check.
I may be mistaken but i don't belive our freindly tool creator is that skilled a programmer, once he does a write up on the "format" (hope thats the right word), somone else with the coding knowlage will come along and do he work there. Don't look at me for it though, don't know a sasuage about programming, would like to learn but...- Carl
#66
There are 480 bit hashes but afaik they are not commonly used. That's why I'm going for multiple hashes.
Figured out some more bits from OPPC files. Here's the updated format:
Code:================ OPPC File Format ================ Version: 0.1.2 Author: Santos ================ Resource Types -------------- 4 - Default 7 - Texture2D 8 - Model 9 - Texture3D ------ HEADER ------ CHAR[4] signature (OBPK) UINT8 flag? (0) UINT32 major version? (10) UINT32 minor version? (0) UINT32 num files UINT32 ? (8-53) UINT32 header size (337) UINT32 index size UINT32 data size (uncompressed) UINT32 ? (0) UINT32 ? (0) UINT32 ? (10000) UINT32 ? (50000) DATA[288] ? ----- INDEX ----- // Unknowns UINT32 num unknowns FOR (num unknowns) DO UINT32 count FOR (count) DO INT32 ? (-1, 60085-64143) // Strings UINT32 num strings FOR (num strings) DO STRING string // Types UINT32 num types FOR (num types) DO DATA[8] type id UINT32 num entries // Entries FOR (num types) DO FOR (type => num entries) DO STRING name STRING dir UINT32 size INT32 index into unknown table UINT32 size UINT32 ? (0) UINT32 ? (0) UINT8 resource type CASE (resource type) OF 4: UINT32 size 7: UINT8 texture compression? (6 - None, 13 - ?, 15 - DXT1, 17 - DXT5) UINT8 num mipmaps? (1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) UINT8 ? (1) UINT16 texture width UINT16 texture height 8: UINT32 file header size UINT32 file data size 7: UINT8 texture compression? (6 - None) UINT8 num mipmaps? (1) UINT8 ? (2) UINT16 texture width UINT16 texture height UINT16 texture length // Padding DATA[N} padding (00 up to index size) ---- DATA ---- UINT32 uncompressed data size DATA[N] compressed data (to end of file)
Last edited by Santos; 27th Aug 11 at 11:26 AM.
#68
Very nice. Editing those and making the game load them would be a major breakthrough, simply changing the armour parts and textures will keep the modding scene busy for weeks.
#71
I was trying to tell you via Steam but somehow it didn't work.
It is rather simple:
1. Add -usepreview as a launch option. (Alternatively you can use UsePreview = true in gamePC.cfg)
2. Go into your Space Marine directory and create a folder called preview.
3. Extract an oppc-package of your choice, e.g. bolter.oppc.
4. Open packages.xml.bin from data\config with a hexviewer of your choice.
5. packages.xml.bin stores the base-directories for packages (among other things). So search for the name of the oppc-package, 12 bytes after the name of the oppc-package will be its base directory, in our case that's art/race_marine/characters/spacemarine/weaponranged.
6. Create the base directory within the preview folder and move the extracted folder into it (e.g. preview\art\race_marine\characters\spacemarine\weaponranged\bolter\).
7. Done.
Doing this with attr_pc-files will make the game load these files as well but so far wargear etc. loaded this way does not appear ingame, weapons are not selectable -- but still they're loaded, confirmed this multiple times.
Ah, I was hoping there might be a -dev mode of some kind, like the one in DoW2 and indeed there is! I salute you for figuring that out, well done!
Unfortunely I cannot play around with this at the moment, because I happen to be one of those unfortunate souls for whom the demo crashes soon after playing initial videos.Tried pretty much everything at this point (apart from reinstalling windows) and still cannot run it. Hopefully Relic will do some fixes before release...
Than again If I can't play, I can at least write some tools.I wonder if you could verify this also works with models?
#73
How soon? When playing the THQ-movie? Because this normally happens when I accidentally damage a file in any way.
I could probably verify it if I knew my way around models and stuff. But I don't, seriously. I once wrote a raytracer but other than that I've never dealt with models. If you give me a step-by-step guide how I would verify it, I'd be pleased to test it.
Couple seconds after . I tried running the game before I started messing around with it, so it's not crashing due to some damaged files I think. But how would I know anyway, if it doesn't even write anything to freaking logs.How soon? When playing the THQ-movie?There are tons of people with this problem on official forums and it seems Relic really screwed something badly...
As for models, we don't have an exporter yet, so the only thing you can possibly try, is to take some existing model and replace it with another existing model (DCM file that is), using exactly the same method as with textures. I'm just curious if that would work without any problems. Probably it's best to try this with some static mesh like weapon or maybe swapping a piece of armor from one set to another could possibly work.
Yeah, that and redownloading the demo.Santos, have you tried running a Steam integrity check? Maybe there's just one file not downloaded correctly, happens sometimes.
#76
Looks like I filed that dev track bug two weeks too late
I guess the OPPC unpacker could be rewritten so it directly unpacks/creates the base dir? BTW I really want to make/have a mod that makes blood splatters stay longer on power armor or makes them permanent. Look rather lame to see it fade after like 10 seconds.
#78
Great! Now we just need a model exporter...
On a side note. I just cracked another file format (with BOD signature), which turned out to be shared by as much as 8 (out 21 total) types of files from OPPC archives. These files have different extensions (object-manifest, O3d, bmat, PSystem and some others) but are simply a collection of parameters and can be converted to some human readable format like XML (which I already did). Some some small unknown bits still remain but they should be fully editable eventually...
So, you can swap weapon models; but is it possible at all to say, switch one character model in for another? i.e. Instead of Titus, Leandros or Sidonus, or the vanilla Ultramarine shown earlier in the thread? That would be rightly neat-o.. Then again, most coding and modding is gibberish to me.Cheers!
Courage and Honor!The enemies of the Emperor fear many things.
They fear discovery, defeat, despair and death.
Yet there is one thing they fear above all others.
They fear the wrath of the Space Marines!
#82
Should be possible, but probably very difficult. The space marine figure is a composition of various parts of wargear, a specific head and some other stuff. These things are afaik stored in an attr_pc file, which we cannot load properly yet. One could of course replace every single part of the figure but this would most likely break something.
I tried to replace the Titus head with a helmet (at the risk of ruining the forum's running gag) and the game refused to start. Probably problems with bones and stuff, looks like we'll have to wait for the attr_pcs to be editable.
Hey Copernicus and Don, could you two pm me your steamids? :3
Never befriend an Ork on Facebook without first limiting your public profile from The Emperor.
#85
santos: can you paste in the full path to your steam folder? we can take this to the official forum thread
#87
@NastyNoodle/Don the Oiler:
Glowing textures are missing textures. Every dcm-model references a material file (whatever.bmat) which it is searching for in its folder. You can see what bmat-file it is looking for by opening it in a hex-editor and looking for the last ASCII-string in the DCM's header. This bmat-file then references textures, maps etc.. Take the lasgun for example:
To replace the bolter with the lasgun, I took all the lasguns files and dropped them in the bolter's folder. Then I renamed lasgun.dcm to bolter.dcm, but left the rest of the files unchanged. Opening the lasgun's DCM file will tell you that it is looking for standard_20.bmat. If that file is missing in the bolter's folder, you'll get glowing textures.
Edit: Also make sure you're using the latest version of Santos' tools for unpacking the files (smoppc).
Last edited by Copernicus; 28th Aug 11 at 1:18 AM.
Fantastic work, hopefully even more can come of this, we may see Space Marine mods after all!
I imported all of Titus in to max (this is going to make re-textures a hell of a lot easier!). There are still quite a few issues with the origins, and I am getting a crash when trying to render the head after importing it (deleting the skinning and bones seems to make it work if that's useful)
(picture from max viewport as broken link since I am apparently too new to post links!)
http : // www . members . optusnet . com . au/isotoper/titus . jpg
Ah thanks, extracting it again with smoppc fixed issues for me.
Ork Shoota works... kinda.
Another very important format to look into: USM! I know THQ, Relic and AMD are awesome, but with all the mod-testing it gets tedious to watch the intro movies every the time.
EDIT: Errr... doesn't matter, problem solved
Last edited by Don the Oiler; 28th Aug 11 at 7:59 AM.
#90
you can skip the intro as soon as the game is loaded in thebackgrounds but not before
Bit late for the party Golem ;3
Also that guy is an idiot for telling people to export to bitmap. Would ruin any and all alpha maps
Would anyone be kind enough to do a short write up on how they are swapping models/textures and getting them back in-game? Is there a way to re-pack oppc files?
-edit- I just downloaded one of Noodles packs that gives me some idea!
I notice the map props are also stored in the same model and package format, has anyone found out how the levels are structured and stored at all?
-edit- Also another question, are there plans to make an exporter? Really looking forward to being able to create custom meshes....
Last edited by Carbon14; 28th Aug 11 at 11:53 PM.
@Carbon14
If you followed Santos thread, you would've noticed that all this is in the works. There's also a guide there on how to load custom/modified content. Just no custom meshes yet, as there is no .DCM exporter yet.
NastyNoodle i cnow. If not have unpaker. I use DXRipper for getting original textures.
ps
it not my video
Last edited by ~GOLEM~; 29th Aug 11 at 9:02 AM.
#97
Great work to the lot of you who have been deciphering the file formats and making the tools so far. Gave smoppc and SMImport a quick try today, and it made my monitor put on a happy face.
@Santos: I do have a question though:
- I'm guessing most people don't really use it, but I decided to try out the "Normals" smoothing mode for the importer. This throws a MAXScript error for seemingly every model I try. Is this a bug, an unfinished feature, or remnants of some experiments? I run 3DS Max 2008 (x86) on Windows 7 Ultimate (x64).
Script editor points to line 534 of SMImport.ms:
Here's the Listener log:Code:newMesh.editNormals.ConvertFaceSelection &face &normals
@Don the Oiler: Any chance you could let me in on the material setup and rendering properties you've used to get the nice renders you've posted a few times in this topic?Code:"Importing E:\SM_Modding\packages\sm_armour_basic_001_torso\sm_armour_basic_001_torso.dcm" -- Error occurred in i loop; filename: C:\Program Files (x86)\Autodesk\3ds Max 2008\scripts\SMTools\SMImport.ms; position: 15391 -- Frame: -- normals: #{} -- i: 1 -- face: #{1} -- called in subMesh loop; filename: C:\Program Files (x86)\Autodesk\3ds Max 2008\scripts\SMTools\SMImport.ms; position: 15649 -- Frame: -- verts: undefined -- numfaces: 1510 -- smoothingGroups: undefined -- sharedFaces: undefined -- groupID: undefined -- weldedVertices: #([0.32317,0.01389,1.88106], [0.3222,0.03492,1.82808], [0.3216,0.02819,1.77436], [0.16242,-0.02025,1.97992], [0.2122,-0.02215,1.97997], [0.15748,-0.03026,1.99448], [-0.1035,-0.195678,1.45442], [-0.0704,0.188582,1.40206], [0,0.189272,1.40108], [0.25185,0.00884204,1.43325], [0.2489,-0.049408,1.44074], [0.23903,0.075352,1.42503], [-0.25185,0.00884204,1.43325], [-0.23903,0.075352,1.42503], [-0.2489,-0.049408,1.44074], [-0.00669,0.27139,1.75959], [0,0.26463,1.75804], [0,0.27741,1.77016], [0.00669,0.27139,1.7596], [-0.32495,-0.09155,1.70538], ...) -- vertexMap: #(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 17, 19, ...) -- index: undefined -- subMesh: (SubMeshData name:"SM_Torso" vertices:#((VertexData position:[0.32317,0.01389,1.88106] normal:[0.920408,-0.313584,-0.233481] binormal:[0.286358,0.94732,-0.143473] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.524302,0.663405,0], [0.0254099,0.217992,0])), (VertexData position:[0.3222,0.03492,1.82808] normal:[0.999824,0.0136703,-0.0128793] binormal:[-0.0150532,0.993339,-0.114242] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.538836,0.636921,0], [0.0359171,0.269681,0])), (VertexData position:[0.3216,0.02819,1.77436] normal:[0.906067,-0.39228,0.158616] binormal:[0.407027,0.910465,-0.0733606] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.538587,0.608377,0], [0.0326674,0.322091,0])), (VertexData position:[0.16242,-0.02025,1.97992] normal:[0.0306752,0.818763,0.573312] binormal:[-0.99917,0.0404851,-0.004357] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.226304,0.667234,0], [0.0160469,0.121543,0])), (VertexData position:[0.2122,-0.02215,1.97997] normal:[0.0184365,0.841536,0.539886] binormal:[-0.999684,0.0247311,-0.00441103] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.20075,0.66713,0], [0.0108213,0.121494,0])), (VertexData position:[0.15748,-0.03026,1.99448] normal:[0.0212426,0.837377,0.546213] binormal:[-0.99977,0.0194431,0.00907431] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.229084,0.676309,0], [0.00605271,0.107338,0])), (VertexData position:[-0.1035,-0.195678,1.45442] normal:[-0.0214869,0.142886,0.989506] binormal:[0.999704,-0.00823105,0.0228969] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.286322,0.64757,0], [0.661497,0.634233,0])), (VertexData position:[-0.0704,0.188582,1.40206] normal:[0.0124814,0.133948,0.99091] binormal:[0.999856,-0.0130219,-0.0108338] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.293818,0.749084,0], [0.296467,0.685317,0])), (VertexData position:[0,0.189272,1.40108] normal:[0,0.135641,0.990758] binormal:[0.999934,-0.0114051,0.00156143] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.312227,0.749508,0], [0.25,0.686273,0])), (VertexData position:[0.25185,0.00884204,1.43325] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.378723,0.702413,0], [1.02923,0.654887,0])), (VertexData position:[0.2489,-0.049408,1.44074] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.378134,0.687045,0], [0.991071,0.64758,0])), (VertexData position:[0.23903,0.075352,1.42503] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.37516,0.719897,0], [1.07198,0.662907,0])), (VertexData position:[-0.25185,0.00884204,1.43325] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.246832,0.700897,0], [0.470775,0.654887,0])), (VertexData position:[-0.23903,0.075352,1.42503] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.249991,0.718459,0], [0.428015,0.662907,0])), (VertexData position:[-0.2489,-0.049408,1.44074] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.247774,0.685547,0], [0.508929,0.64758,0])), (VertexData position:[-0.00669,0.27139,1.75959] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.934958,0.157236,0], [0.253321,0.336501,0])), (VertexData position:[0,0.26463,1.75804] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.930882,0.156048,0], [0.25,0.338013,0])), (VertexData position:[0,0.27741,1.77016] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.931026,0.162964,0], [0.25,0.326189,0])), (VertexData position:[0,0.26463,1.75804] normal:[-0.465614,0.608977,-0.642146] binormal:[-0.839308,-0.533965,0.102191] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.930882,0.156048,0], [0.25,0.338013,0])), (VertexData position:[0.00669,0.27139,1.7596] normal:[-0.465614,0.608977,-0.642146] binormal:[-0.839308,-0.533965,0.102191] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.927211,0.157403,0], [0.246679,0.336491,0])), ...) vertexOffset:0 faces:#([1,3,2], [4,6,5], [7,9,8], [10,12,11], [13,15,14], [16,18,17], [19,21,20], [22,24,23], [24,22,25], [25,26,24], [26,25,27], [28,26,27], [26,28,29], [28,30,29], [30,28,31], [31,32,30], [32,31,33], [33,34,32], [34,33,35], [36,34,35], ...) faceOffset:0 skinBones:#(1, 2, 3)) -- offset: 123360 -- FaceSelection: undefined -- streamOffset: 101947 -- smoothFaces: undefined -- stack: undefined -- numVertices: 1542 -- face: undefined -- modSkin: undefined -- newMesh: $SM_Torso -- orgFace: undefined -- weldedFaces: #([1,3,2], [4,6,5], [7,9,8], [10,12,11], [13,15,14], [16,18,17], [17,18,19], [20,22,21], [22,20,23], [23,24,22], [24,23,25], [26,24,25], [24,26,27], [26,28,27], [28,26,29], [29,30,28], [30,29,31], [31,32,30], [32,31,33], [34,32,33], ...) -- called in _mesh loop; filename: C:\Program Files (x86)\Autodesk\3ds Max 2008\scripts\SMTools\SMImport.ms; position: 16797 -- Frame: -- _mesh: (MeshData numVertices:1542 vertexDataOffset:#(9060, 58404, 101580) numfaces:1510 faceDataOffset:0 skinBones:#((SkinBoneData name:"RIG_SpineD" matrix:(matrix3 [0,2.86236e-006,-1] [-0.129737,0.991548,2.81393e-006] [0.991548,0.129737,2.93275e-007] [-1.56095,-0.195074,-1.64642e-006]) parent:3 Bone:$RIG_SpineD), (SkinBoneData name:"RIG_Pelvis" matrix:(matrix3 [1.28171e-006,-9.53704e-007,-1] [0,1,-9.53675e-007] [1,0,1.34082e-006] [-1.22484,0.00885656,-2.8643e-006]) parent:1 Bone:$RIG_Pelvis), (SkinBoneData name:"RIG_SpineA" matrix:(matrix3 [3.05037e-006,0.000348194,-1] [0.00952238,0.999954,0.000348181] [0.999955,-0.00952245,-3.2788e-007] [-1.40716,0.0223705,-7.28494e-007]) parent:2 Bone:$RIG_SpineA)) subMeshes:#((SubMeshData name:"SM_Torso" vertices:#((VertexData position:[0.32317,0.01389,1.88106] normal:[0.920408,-0.313584,-0.233481] binormal:[0.286358,0.94732,-0.143473] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.524302,0.663405,0], [0.0254099,0.217992,0])), (VertexData position:[0.3222,0.03492,1.82808] normal:[0.999824,0.0136703,-0.0128793] binormal:[-0.0150532,0.993339,-0.114242] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.538836,0.636921,0], [0.0359171,0.269681,0])), (VertexData position:[0.3216,0.02819,1.77436] normal:[0.906067,-0.39228,0.158616] binormal:[0.407027,0.910465,-0.0733606] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.538587,0.608377,0], [0.0326674,0.322091,0])), (VertexData position:[0.16242,-0.02025,1.97992] normal:[0.0306752,0.818763,0.573312] binormal:[-0.99917,0.0404851,-0.004357] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.226304,0.667234,0], [0.0160469,0.121543,0])), (VertexData position:[0.2122,-0.02215,1.97997] normal:[0.0184365,0.841536,0.539886] binormal:[-0.999684,0.0247311,-0.00441103] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.20075,0.66713,0], [0.0108213,0.121494,0])), (VertexData position:[0.15748,-0.03026,1.99448] normal:[0.0212426,0.837377,0.546213] binormal:[-0.99977,0.0194431,0.00907431] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.229084,0.676309,0], [0.00605271,0.107338,0])), (VertexData position:[-0.1035,-0.195678,1.45442] normal:[-0.0214869,0.142886,0.989506] binormal:[0.999704,-0.00823105,0.0228969] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.286322,0.64757,0], [0.661497,0.634233,0])), (VertexData position:[-0.0704,0.188582,1.40206] normal:[0.0124814,0.133948,0.99091] binormal:[0.999856,-0.0130219,-0.0108338] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.293818,0.749084,0], [0.296467,0.685317,0])), (VertexData position:[0,0.189272,1.40108] normal:[0,0.135641,0.990758] binormal:[0.999934,-0.0114051,0.00156143] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.312227,0.749508,0], [0.25,0.686273,0])), (VertexData position:[0.25185,0.00884204,1.43325] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.378723,0.702413,0], [1.02923,0.654887,0])), (VertexData position:[0.2489,-0.049408,1.44074] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.378134,0.687045,0], [0.991071,0.64758,0])), (VertexData position:[0.23903,0.075352,1.42503] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.37516,0.719897,0], [1.07198,0.662907,0])), (VertexData position:[-0.25185,0.00884204,1.43325] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.246832,0.700897,0], [0.470775,0.654887,0])), (VertexData position:[-0.23903,0.075352,1.42503] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.249991,0.718459,0], [0.428015,0.662907,0])), (VertexData position:[-0.2489,-0.049408,1.44074] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.247774,0.685547,0], [0.508929,0.64758,0])), (VertexData position:[-0.00669,0.27139,1.75959] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.934958,0.157236,0], [0.253321,0.336501,0])), (VertexData position:[0,0.26463,1.75804] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.930882,0.156048,0], [0.25,0.338013,0])), (VertexData position:[0,0.27741,1.77016] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.931026,0.162964,0], [0.25,0.326189,0])), (VertexData position:[0,0.26463,1.75804] normal:[-0.465614,0.608977,-0.642146] binormal:[-0.839308,-0.533965,0.102191] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.930882,0.156048,0], [0.25,0.338013,0])), (VertexData position:[0.00669,0.27139,1.7596] normal:[-0.465614,0.608977,-0.642146] binormal:[-0.839308,-0.533965,0.102191] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.927211,0.157403,0], [0.246679,0.336491,0])), ...) vertexOffset:0 faces:#([1,3,2], [4,6,5], [7,9,8], [10,12,11], [13,15,14], [16,18,17], [19,21,20], [22,24,23], [24,22,25], [25,26,24], [26,25,27], [28,26,27], [26,28,29], [28,30,29], [30,28,31], [31,32,30], [32,31,33], [33,34,32], [34,33,35], [36,34,35], ...) faceOffset:0 skinBones:#(1, 2, 3))) flag:1) -- called in ImportModel(); filename: C:\Program Files (x86)\Autodesk\3ds Max 2008\scripts\SMTools\SMImport.ms; position: 16803 -- Frame: -- options: (optionsStruct smoothing:3 resetScene:true saveScene:false weldVertices:true) -- MeshData: StructDef:MeshData -- SubMeshData: StructDef:SubMeshData -- numMeshes: 1 -- VertexData: StructDef:VertexData -- file: <BinStream:E:\SM_Modding\packages\sm_armour_basic_001_torso\sm_armour_basic_001_torso.dcm> -- path: "E:\SM_Modding\packages\sm_armour_basic_001_torso\sm_armour_basic_001_torso.dcm" -- headerSize: 367 -- SkinBoneData: StructDef:SkinBoneData -- dataSize: 231108 -- meshes: #((MeshData numVertices:1542 vertexDataOffset:#(9060, 58404, 101580) numfaces:1510 faceDataOffset:0 skinBones:#((SkinBoneData name:"RIG_SpineD" matrix:(matrix3 [0,2.86236e-006,-1] [-0.129737,0.991548,2.81393e-006] [0.991548,0.129737,2.93275e-007] [-1.56095,-0.195074,-1.64642e-006]) parent:3 Bone:$RIG_SpineD), (SkinBoneData name:"RIG_Pelvis" matrix:(matrix3 [1.28171e-006,-9.53704e-007,-1] [0,1,-9.53675e-007] [1,0,1.34082e-006] [-1.22484,0.00885656,-2.8643e-006]) parent:1 Bone:$RIG_Pelvis), (SkinBoneData name:"RIG_SpineA" matrix:(matrix3 [3.05037e-006,0.000348194,-1] [0.00952238,0.999954,0.000348181] [0.999955,-0.00952245,-3.2788e-007] [-1.40716,0.0223705,-7.28494e-007]) parent:2 Bone:$RIG_SpineA)) subMeshes:#((SubMeshData name:"SM_Torso" vertices:#((VertexData position:[0.32317,0.01389,1.88106] normal:[0.920408,-0.313584,-0.233481] binormal:[0.286358,0.94732,-0.143473] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.524302,0.663405,0], [0.0254099,0.217992,0])), (VertexData position:[0.3222,0.03492,1.82808] normal:[0.999824,0.0136703,-0.0128793] binormal:[-0.0150532,0.993339,-0.114242] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.538836,0.636921,0], [0.0359171,0.269681,0])), (VertexData position:[0.3216,0.02819,1.77436] normal:[0.906067,-0.39228,0.158616] binormal:[0.407027,0.910465,-0.0733606] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.538587,0.608377,0], [0.0326674,0.322091,0])), (VertexData position:[0.16242,-0.02025,1.97992] normal:[0.0306752,0.818763,0.573312] binormal:[-0.99917,0.0404851,-0.004357] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.226304,0.667234,0], [0.0160469,0.121543,0])), (VertexData position:[0.2122,-0.02215,1.97997] normal:[0.0184365,0.841536,0.539886] binormal:[-0.999684,0.0247311,-0.00441103] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.20075,0.66713,0], [0.0108213,0.121494,0])), (VertexData position:[0.15748,-0.03026,1.99448] normal:[0.0212426,0.837377,0.546213] binormal:[-0.99977,0.0194431,0.00907431] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.229084,0.676309,0], [0.00605271,0.107338,0])), (VertexData position:[-0.1035,-0.195678,1.45442] normal:[-0.0214869,0.142886,0.989506] binormal:[0.999704,-0.00823105,0.0228969] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.286322,0.64757,0], [0.661497,0.634233,0])), (VertexData position:[-0.0704,0.188582,1.40206] normal:[0.0124814,0.133948,0.99091] binormal:[0.999856,-0.0130219,-0.0108338] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.293818,0.749084,0], [0.296467,0.685317,0])), (VertexData position:[0,0.189272,1.40108] normal:[0,0.135641,0.990758] binormal:[0.999934,-0.0114051,0.00156143] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.312227,0.749508,0], [0.25,0.686273,0])), (VertexData position:[0.25185,0.00884204,1.43325] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.378723,0.702413,0], [1.02923,0.654887,0])), (VertexData position:[0.2489,-0.049408,1.44074] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.378134,0.687045,0], [0.991071,0.64758,0])), (VertexData position:[0.23903,0.075352,1.42503] normal:[0.0203428,0.126492,0.991759] binormal:[0.999717,-0.014827,-0.0186149] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.37516,0.719897,0], [1.07198,0.662907,0])), (VertexData position:[-0.25185,0.00884204,1.43325] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.246832,0.700897,0], [0.470775,0.654887,0])), (VertexData position:[-0.23903,0.075352,1.42503] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.249991,0.718459,0], [0.428015,0.662907,0])), (VertexData position:[-0.2489,-0.049408,1.44074] normal:[-0.0203428,0.126492,0.991759] binormal:[0.999733,-0.00829433,0.0215642] indices:#(2, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.247774,0.685547,0], [0.508929,0.64758,0])), (VertexData position:[-0.00669,0.27139,1.75959] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.934958,0.157236,0], [0.253321,0.336501,0])), (VertexData position:[0,0.26463,1.75804] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.930882,0.156048,0], [0.25,0.338013,0])), (VertexData position:[0,0.27741,1.77016] normal:[0.466366,0.608704,-0.641858] binormal:[-0.824255,0.562413,-0.0655312] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.931026,0.162964,0], [0.25,0.326189,0])), (VertexData position:[0,0.26463,1.75804] normal:[-0.465614,0.608977,-0.642146] binormal:[-0.839308,-0.533965,0.102191] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.930882,0.156048,0], [0.25,0.338013,0])), (VertexData position:[0.00669,0.27139,1.7596] normal:[-0.465614,0.608977,-0.642146] binormal:[-0.839308,-0.533965,0.102191] indices:#(1, 1, 1, 1) weights:#(1.0, 0.0, 0.0, 0.0) uvw:#([0.927211,0.157403,0], [0.246679,0.336491,0])), ...) vertexOffset:0 faces:#([1,3,2], [4,6,5], [7,9,8], [10,12,11], [13,15,14], [16,18,17], [19,21,20], [22,24,23], [24,22,25], [25,26,24], [26,25,27], [28,26,27], [26,28,29], [28,30,29], [30,28,31], [31,32,30], [32,31,33], [33,34,32], [34,33,35], [36,34,35], ...) faceOffset:0 skinBones:#(1, 2, 3))) flag:1)) -- import: (importStruct meshes:true Bones:true skins:true boundingBoxes:false) -- called in importButton.pressed(); filename: C:\Program Files (x86)\Autodesk\3ds Max 2008\scripts\startup\SMTools.ms; position: 3051 -- Frame: -- optionsStruct: StructDef:optionsStruct -- options: (optionsStruct smoothing:3 resetScene:true saveScene:false weldVertices:true) -- msg: undefined -- elapsed: undefined -- importStruct: StructDef:importStruct -- path: "E:\SM_Modding\packages\sm_armour_basic_001_torso\sm_armour_basic_001_torso.dcm" -- import: (importStruct meshes:true Bones:true skins:true boundingBoxes:false) -- start: 1309935 >> MAXScript Rollout Handler Exception: -- Unknown system exception <<Never had to worry about all these additional maps and stuff whilst modding DoW1... 98% of the times, the renders looked similar to DoW1 ingame using only the diffuse after all, hence I never bothered paying much attention to the rest of the stuff.
Das Bavarian Franch Reich
13 kilograms og Belgian hair
19 incidents of prolapsus from France
66 liters of unaware pancreas-hatted English priests
1/2 soothing-voiced Norwegian baboon
This probably won't help you since i do my rendering in Deep Exploration, but there i use refractive index 5, blurry reflections and 35 gloss for pretty much every material, normal maps are 30% intensity. I could render it in max too, would probably look much better if i tweak it a little, but Deep Exploration is faster and user-friendlier (as long as you don't try to actually model anything).
@Carbon14
Level descriptions seem to be split into several kind of files (world, region, Layer, nav). I'm writing a tool which converts those into XML, so you'll be able to see what's inside when it's released.
@Kresjah
"Normals" smoothing mode is implemented and should be working. You're getting worst kind of MAXScript error ("Unknown system exception") which tells absolutely nothing about what's causing the crash. I'm reworking the import code right now, so hopefully this problem won't be happening for you with next version anymore.
Wow, sounds great Santos. While fairly unlikely, and probably a whole lot of work, how much of a chance is there that creating levels may be possible at some point? Since creating an actual level editor would be way too difficult, I guess it would have to be done as a max exporter or something though. At least if you make them XML readable then it would be possible to tweak things like weapon and enemy placement and quantity.
Also, more questions, have you got any idea how the ragdoll/cloth bits are done? I cant see any bones on the import, so I am wondering how the attachment point is determined? Also wondering, since the tabard thing has a thickness, if there is some sort of vertex painting or weights or some other info stored there? since I would have thought if the vertices were allowed to just fly around as they saw fit they would tend to intersect and the back would tend to pop through to the front etc?
P.S. The normals smoothing mode works for me (max 2009)
-edit- One last thing, dunno if its an issue or not but the scale seems unusually tiny, and at least in max 2009 makes editing a little annoying. The SM is about "2" generic units high, possibly 200 would be more in order?
There are currently 1 users browsing this thread. (0 members and 1 guests)