Kitty Corp Meow Mix Forums

Super Smash Bros. Brawl Hacking => Programming => Topic started by: BlackJax96 on December 13, 2010, 08:39:11 PM



Title: Brawlbox Resources & History
Post by: BlackJax96 on December 13, 2010, 08:39:11 PM
NOTE: This thread is no longer updated as of 1/1/2014!
You can follow and discuss new BrawlBox updates here:
http://forums.kc-mm.com/index.php?topic=67847.0

Download (all versions made before 1/1/2014):
v0.71 (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=35494)
v0.70 (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=35149)
v0.69b (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=34998)
v0.69 (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=34689)
v0.68d (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=32721)
v0.68c (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=32211)
v0.68b (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=31974)
v0.68 (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=31912)
v0.67b (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=27797)
v0.67 (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=27487)
v0.66b (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=25868)
v0.66 (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=25803)
v0.65c (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=25003)
v0.65b (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=24929)
v0.65b Beta (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=24369)
v0.65 (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=23386)
v0.64d (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=21968)
v0.64 Modset 1 (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=20067)

Legacy versions (very old)
BrawlBox v0.63d Modset 4.2 (https://www.dropbox.com/s/i8bta1tfsczmk9j/BrawlBox%20v0.63d%20Modset%204.2.zip)
BrawlBox v0.63d (https://www.dropbox.com/s/5o5vpcp4g4z52h5/BrawlBox%20v0.63d.zip)
SmashBox v0.57 (https://www.dropbox.com/s/knz3g3g0eoiqlpd/SmashBox%20v0.57.exe)

Google Code Source (http://code.google.com/p/brawltools2/)
Latest Source (RAR Download) (https://www.dropbox.com/s/cggw2k55ni41nl7/BrawlTools2%20Source%2012-31-2013.rar)
Download .NET Framework 4 (http://www.microsoft.com/en-us/download/details.aspx?id=17718)
Instructions for Mac users (http://forums.kc-mm.com/index.php?topic=64955.0)


Change Log:

 - v0.71- (12/25/2013) - BrawlLib v0.18
   . Added a tristripper and integrated it into Brawllib. This allows for mesh optimization for smaller filesize and less in-game lag.
   . Added several new options to the model importer settings dialog, including tristripper algorithm options
   . Added "Optimize" option to MDL0/object right click menus. This will allow you to re-optimize meshes that have already been encoded.
   . Added support for writing string type user data properly
   . Added toggles for texture matrices in model object properties
   . Fixed a bug where exported Collada models would have _ID added to the end of all bone and object names.

 - v0.70- (12/7/2013) - BrawlLib v0.17
   . Fixed header and alignment in module rebuilder
   . Fixed problem adding a new word to a static module
   . Fixed the right click menu on a static module
   . Fixed bug where only the command list with the same module id would be applied
   . Added option to change a relocation command's target module
   . Removed the Imports folder from REL tree, as its generation is now fully automatic

 - v0.69b- (11/19/13) - BrawlLib v0.16b
   . Fixed problem painting the GUI when closing the model viewer
   . Fixed bug where when opening a TXT in the code manager, any spaces after hex lines would cause reading problems
   . Fixed bug where if codes where recognized in a GCT, they would be displayed as recognized and unrecognized
   . Fixed bug where hex lines in a GCT would be read incorrectly
   . Finished, fixed and added PMD importer
   . Fixed error in collision viewer with displaying and selecting plans/links anchored to bones
   . Fixed display error of SHP0 framecount in its editor
   . Fixed display error of CLR0 primary color in its editor
   . Fixed error when trying to view an SCN0 camera entry
   . Fixed error reading float values with commas in anim parser
   . Fixed problem where the bounding box would not be generated for imported models
   . Added option to code manager to display all remembered codes
   . Updated Collada model exporter to Collada 1.5
   . Updated Collada model importer to support Collada 1.5
   . Updated GCT editor to have checkboxes next to codes

 - v0.69- (10/18/13) - BrawlLib v0.16
   . Started to add Maya .anim animation importing and exporting. This feature is still a work in progress and does not work properly yet.
   . Added interpolation editor located under Tools in the model viewer
   . Added DOL & REL section editor
   . Finished DOL & REL rebuilders
   . Added option to sync first and last keyframes (useful for looping animations)
   . Added option to generate animation tangents automatically or not
   . Added "Recent Files" under File in the main menu strip
   . Added full support for RunLength and Extended LZ77 compression
   . Added a code manager for GCT files. Can read/write to TXT, save GCT with text info, and open GCTs using a database of saved codes if it contains no text info.
   . Added support for adding REFF entries
   . Added option to move the model viewer panel into a new window and back - useful for dual monitors
   . Added option to create a link directly on a plane in the collision editor
   . Added a help window to the collision editor
   . Added a texture resize function to the Texture Converter dialog
   . Added a Re-Encode option to the right click menus of TEX0, REFT, and TPL textures
   . Fixed saving RSAR files (RWSD, RBNK, RSEQ) when they are outside of the RSAR
   . Fixed U8 parser/rebuilder
   . Fixed bug where the model previewer would lock itself if you closed it while playing an animation
   . Fixed "Replace All" button on ARC right click menu
   . Fixed MDL0 object importer
   . Updated the keyframe panel in the model viewer
   . Made animation frames able to be copied and pasted in different instances of Brawlbox
   . Updated model viewer to internally retain all changes to settings; no more external settings file.
   . Model viewer settings can be exported, imported, and reset to default.
   . Updated the display of TPL entries
   . Updated the Collada model import settings dialog

 - v0.68d- (6/22/2013) - BrawlLib v0.15d
   . Fixed BRSTM encoder issue
   . Fixed issue with mini model viewer when first loaded
   . Fixed bug where the frame count and loop animation properties were gone
   . Fixed animation framerate in model viewer (defaults to 60) - changing the FPS (Frames Per Second) value now works accurately
   . Fixed issue when opening collision viewer for the first time
   . Fixed collision plane culling (was inside-out) and removed 2D selection overlay from collision viewer
   . Fixed problem where texture matrices would be removed but leave empty bytes in the object
   . Moved collision editor and model viewer code out of Brawllib and into Brawlbox
   . Removed wireframe mode from the polygons button and moved it to a seperate menu button
   . Added support for viewing THPs (video and audio may desync though)

 - v0.68c- (5/27/2013) - BrawlLib v0.15c
   . Added bones panel to the keyframes panel in the model previewer
   . Removed buttons to toggle playback and bones panels
   . Removed moveset editor (Moveset editing moved to Ikarus)
   . Fixed shortcut text for the button to toggle bones
   . Fixed crash when saving a PCS with compression already set to LZ77
   . Fixed bug opening a model with objects that have incorrect vertex format flags
   . Fixed problem with PAT0 animations and different palettes
   . Fixed importing a model with no materials
   . Fixed model import problem where all normals and unweighted objects would be rotated forward 90 degrees
   . Added ability to drag and drop tree nodes. Hold shift to add node as a child
   . Added drop down color picker for any RGBA pixel property

 - v0.68b- (5/5/2013) - BrawlLib v0.15b
   . Fixed loop points when importing an RSAR sound
   . Fixed problem where edited models would explode in-game
   . Fixed REFT image importer. Works just as good as the TEX0 image importer now
   . Fixed when vertices are moved when modified by a SHP0
   . Fixed background image to load immediately
   . Fixed random green/blue/yellow color overlays when clicking bones
   . Fixed when the last frame of an animation is deleted when clicking "."
   . Fixed bone translation tool
   . Fixed duplicated objects to be independent from the original
   . Changed shortcut to delete the current frame to Shift + Backspace
   . Changed shortcut when zooming to increase/decrease camera zoom/translate/rotate speeds from Control to Alt
   . Added support to compress U8 Archives to YAZ0 format with RunLength compression
   . Added support for v1.9 REFF
   . Finished REFT and REFF rebuilders
   . Finished TPL rebuilder
   . Set point/line smooth to off by default and added a button to toggle it on
   . Set text overlays to not display by default and added a button to toggle them on
   
- v0.68- (4/28/2013) - BrawlLib v0.15
   . Fixed "Null weights" MDL0 error
   . "Export as Single Matrix" 3ds Max export setting for DAE models is not necessary to check anymore
   . Added support for editing REFF files
   . Updated UserData handling
   . Updated MDL0 Material Properties
   . MDL0 Objects updated: now support both an OPA and XLU material, added "DrawPriority" value and added the ability to change linked vertex/normal/color/uv nodes.
   . Updated BRRES "Edit All" dialog
   . Added TPL support
   . Added SCN0 & CLR0 editors to the model viewer (however, their effects cannot be literally displayed yet)
   . SCN0 rebuilder bugfixes
   . Finished SCN0 Editor
   . Added various model viewer buttons: take screenshot, save camera, model viewer help, load background image
   . Revised and added new options to model viewer settings window
   . Began working on rendering materials & shaders using GLSL; all OpenGL coded has been modified to use OpenTK. This feature is not yet available.
   . Added "Original Path" string value for all NW4R nodes.
   . Edited animation editors in model viewer to be a bit more compact
   . Finished RSAR rebuilder
   . Added RSAR sound importer
   . Added RSAR file viewer
   . Made RSAR file list sortable by columns
   . Fixed loop point retrieval for RSAR sounds
   . Added support for stereo RSAR sounds
   . Added support for modifying RWSD, RBNK, and RSEQ files. RSEQ MML code is not yet editable yet.
   . Added support for all RSAR versions
   . Added support for RWAR and RWAV formats, located in other versions of RWSD and RBNK
   . Updated Stage Model Converter
   . Fixed when an offset parameter is pasted back into moveset code
   . Finished bone translation and scale controls in the model previewer
   . Implemented vertex editor
   . Made bones, vertices and the bone scale/rotation/translation controls highlight when you move the mouse over them
   . Added left and right buttons to texture previewer to view the different mipmaps
   . Fixed problem with importing mono audio files
   . Multi-Channel BRSTMs are now previewable
   . Undo and Redo buttons re-coded
   . Added buttons to display model and object bounding boxes and to render normals
   . Fixed .wav file exporter
   . Corrected SHP0 morphing between multiple destinations
   . Added a donate button to the About menu dropdown (yay!)

 - v0.67b- (7/23/2012) - BrawlLib v0.14b
   . Move up/down for events doesn't randomly throw an error
   . SubActions can have same names
   . Model Visibility works perfectly in viewer
   . Article Data3 now read correctly, will not freeze entry article
   . Auto removal of FADEF00D and FADE0D8A events created by PSA
   . External subroutine removal doesn't corrupt save file
   . Setting an offset doesn't require the value to already have an offset
   . Offset editor fixed up, had some problems before and did not work.
   . Culture Invariant Float.Parse on most parse uses
   . Loads animations from U8 files correctly
   . WAV files now parse correctly when there is text info in the header
   . InsertChild now adds node in right location on node tree
   . Event changes in viewer updates on the selected frame right after being modified
   . Model visibility switch nodes sync in number between references
   . Added REL stage converter coded by libertyernie to REL right click menu
   . Added new parameter node handling for events
   . Added new parameter node for external GFX using new text file "GFXFiles.txt" for the gfx file names. Names originally written down by Eternal Yoshi.
   . CLR0 parsing/rebuilding remade. Full editing support and v4 support
   . Removed all unknowns from all formats found in BRRES files. All flags are fully known as well.
   . Fixed CHR0/SRT0 manual editors
   . Fixed SRT0 flag handling
   . Better lighting in model viewer
   . SCN0 fully editable and rebuildable
   . "Part2" entries updated to UserData entries with full support

 - v0.67- (7/7/2012) - BrawlLib v0.14
   . New moveset editor & rebuilder
   . SCN0 rebuilder revised
   . PAT0 rebuilder revised
   . New text animation importer for use with a specific maxscript for 3ds Max
   . Various bug fixes

 - v0.66b- (4/17/2012) - BrawlLib v0.13b
   . Various bug fixes
   . Edited viewer based on feedback
   . Previewer now allows saving viewer settings

 - v0.66- (4/10/2012) - BrawlLib v0.13
   . New SRT0 editor & rebuilder
   . New SHP0 editor & rebuilder
   . New PAT0 editor & revised rebuilder
   . New Model Previewer - now supports different animation editors
   . All animation types & versions supported

 - v0.65c- (2/4/2012) - BrawlLib v0.12c
   . Made MDL0 nodes modulate their values and each other more closely
   . Finished Wavefront OBJ exporter (Right click an MDL0 object and export it as OBJ)
   . Fixed up the DAE exporter again
   . Undo and Redo buttons have been fixed for the model viewer and added to the collision viewer (All coded by Xiggah)
   . Texture matrices can now be used without any problems in-game (moving textures)
   . Added stage default support for DAE importer

 - v0.65b- (1/28/2012) - BrawlLib v0.12b
   . Changed GX enums to be easier to understand
   . Updated MDL0 Shader display
   . Added an MDL0 object importer and duplicator
   . Added SCN0, SRT0 and STPM rebuilding
   . Fixed tons of bugs!
   . Added REFT image importer and rebuilder
   . Added new node icons
   . Changed around material values

 - v0.65- (11/8/2011) - BrawlLib v0.12
   . Finished the DAE model importer!
   . Finished the model rebuilder completely (everything is now editable).
   . Finalized shader editing.
   . Fixed the v5 CHR0 saving bug.
   . Added support for v8 MDL0s.
   . Added minor REFF support.
   . Added a new menu to the model previewer
   . Many bugfixes

 - v0.64d- (08/31/2011) - BrawlLib v0.11d (BlackJax96 takes over development from here on)
   . Fixed "Clean" button and the keyframe viewer.
   . Added animation porter
   . Added "Rename All" and "Edit All" buttons to BRRES nodes.
   . Added support for viewing multiple models in the model previewer (CTRL+H opens model switcher).
   . Finished model rebuilder, for the most part.
   . Finished DAE parser.
   . Added support for editing most MDL0 shader values.
   . Added undo and redo functions in the model previewer.
   . Changed the way models are rendered.
   . Added support for v5 CHR0s and v10 and v11 MDL0s.
   . Added the ability to drag files into the model previewer to view all the models in the file.
   . Added bone tree editing functions.
   . Added support for editing/saving MRG files.
   . Added right click menus to the Trans, Rot and Scale labels for editing keyframes in the model previewer.
   . Many bugfixes and small additions/changes to things

- v0.63d- (02/08/2010) - BrawlLib v0.10d
   . Fixed animation encoder bug.
   . Fixed bug dealing with single CLR entries saving improperly.
   
- v0.63c- (01/31/2010) - BrawlLib v0.10c
   . Various bugfixes
   . Added VIS editor
   . Animation frames now interpolate properly.
 
- v0.63b- (01/19/2010) - BrawlLib v0.10b
   . Fixed image encoding bug related to image format on older systems.
   . Fixed save dialog extension bug. Also, numbered extensions will now have real extension added.
   . Fixed rendering bug related to materials without textures.
   . Added various features to collision editor.
 
- v0.63 - (01/18/2010) - BrawlLib v0.10
   . Fixed a bug that was causing decal textures to link improperly in MDL files.
   . Added minor support for EFLS resources.
   . Added support for stage collision files.
   . Added editor for stage collision files.
   . Fixed minor bug that was affecting the way non-textured polygons are rendered (alloy models).
   . Increased maximum frame delay for animation playback.
   . Fixed bug in OpenGL rendering dealing with depth buffer precision.

- v0.62b- (01/06/2010) - BrawlLib v0.09b
   . Added minor support for single-color CLR0 entries. Fixes many crashing problems.
   . Fixed bug in CI4 encoder that was corrupting image blocks.
   . Added floor option to model viewer.
   . CopyAll/PasteAll in model viewer now saves the animation state globally.
   . Color lists now have two color columns, one with transparency and one without.
   . Added gradient generator to color list.

- v0.62 - (01/05/2010) - BrawlLib v0.09
   . Added support for CLR0 nodes.
   . Added color dialog for CLR0 and PLT0 editing.
   . New Median Cut quantizer using method from GIMP library.
   . Added features to BRSTM converter dialog.
   . Fixed CHR bug that was causing long animations to cut short.
   . Fixed bug in MSBin parser/decoder dealing with empty strings.

- v0.61 - (12/24/2009) - BrawlLib v0.08
   . Added audio playback controls.
   . Added brstm converter.
   . Added CopyAll/PasteAll/Clean/Clear controls to animation editor.
   . Added support for RWSD/RBNK/RSEQ files.
   . Added RSAR file list.

- v0.60c- (12/01/2009) - BrawlLib v0.07c
   . Fixed various bugs with the CHR0 encoder.
   . Fixed a bug in the MSBin encoder for border entries.

- v0.60b- (11/30/2009) - BrawlLib v0.07b
   . Fixed various bugs with the CHR0 encoder.
   . Fixed a bug in the MSBin encoder for border entries.
   . Various improvements to the model editor:
      Added option panel.
      Added cut/copy/paste/insert/delete buttons to animation panel.
      Animation length can be set from the playback panel.
      Added context menu for animation list, which allows for faster import/export.
      Fixed issue with texture layers. Now all textures are rendered until it can be fixed.
      Adjusted keyboard controls.
   . Fixed bug with GLPanel not closing properly.

- v0.60 - (11/24/2009) - BrawlLib v0.07
   . Added tons of features to model editor, including:
      Animation previewer/editor.
      Improved model editor features/controls.
      Improved OpenGL initialization/support.
   . Fixed a bug that was causing PAC files to export uncompressed regardless of setting.
   . Fixed a bug in the CHR0 decoder.
   . Most new features are library improvements. Please see BrawlLib.txt for more details.

- v0.59 - (11/08/2009) - BrawlLib v0.06
   . Re-added settings dialog.
   . Various menu improvements/features.
   . CHR0 entries can now be manipulated.
   . Added editor for CHR0 keyframes.
   . Added editor for MSBin messages.
   . Re-added RSAR support with new organization. (No audio features yet)
   . Improved CMPR algorithm using modified code from the NVidia Texture Tools.
   . Lowered OpenGL version to 1.1, and changed the way mipmaps are generated.
   . Added FileAssociation and FileType classes.
   . Added CHR0 encoder/decoder, with KeyframeCollection class.
   . Added MSBinEditor for editing MSBin messages.

- v0.58b- (10/24/2009) - BrawlLib v0.05
   . Re-integration with BrawlLib is nearly complete. Audio support still isn't finished.
   . Added support for the following new controls from BrawlLib:
      ModelPanel
      TextureConverterDialog
   . New menu system.
   . Due to new rebuild enhancements, nodes can now be created, renamed, and deleted.
   . Various improvements to node stability.
   . Certain resources now automatically convert with the Export/Replace(string) command. Mainly TEX0Node.
   . Support for binary string trees has been added. (Use ResourceEntry.Build)
   . More BRES entries now link to the string table. This allows other resources to change size.
   . BRES entries now do post-processing, and link groups/nodes to the binary tree.

- BrawlLib v0.04 - (10/11/2009)
   . FileMaps now hold on to a FileStream object until the map is closed.
   . Added OpenGL support with basic functions.
   . Added GLPanel/ModelPanel controls
   . Moved MDL0 node classes to separate folder for organization.
   . MDL0 support has been improved.
   . GLModel objects can now be created from MDL0Node.
   . GLModel can be attached to ModelPanel for rendering.

- BrawlLib v0.03 - (10/02/2009)
   . Fixed many bugs dealing with node memory:
      BRES entries properly adjust offsets in OnRebuild.
      BRESGroup addresses change on rebuild.
      Parent nodes (ARC/BRES) don't release sources until rebuild is complete.
      Initialization flag is set so nodes know when to initialize from a raw source.
   . Began support for OpenGL/Models with OGL natives and GLPanel.
   . Added minor speed tweak to LZ77 decompression.

- v0.58 - (09/29/2009) - BrawlLib v0.02
   . Name has changed to BrawlBox (previously SmashBox)
   . Program has been separated, allowing for the creation of BrawlLib.
   . Now has minor Linux support.
   . Audio nodes/controls have been temporarily disabled until BrawlLib can be updated.
   . You can now use SaveAs on the current working file, so long as changes have been made.
   . Added the ability to construct a resource tree from scratch.
   . Various properties from ResourceTreeNode, TEX0Node and PLT0Node can now be written to.

- BrawlLib v0.01 - (09/28/2009)
   . Initial release

- v.057 - (08/23/2009)
   . Added support for brstm files.
   . Increased support for brsar audio packages.
   . Added audio playback control for use with brsar and brstm files.
   . Added the ability to export audio to .wav format.

- v0.56 - (08/09/2009)
   . Added support for TGA images.
   . Re-wrote the LZ77 algorithm for increased speed.
   . Due to compatibility problems with paletted images and transparent colors. All images are now exported in 32-bit format.

- v0.55b - (08/04/2009)
   . Fixed a bug that was causing unknown files to disappear entirely. (Thanks lavamage)
   . Fixed a bug with pre-paletted textures that was causing them to recreate the palette improperly. (Thanks kid craft 24/sonic master)
   . Added a progress bar for those long compression jobs.
   . Discovered another portion of model files that needs an entry in the BRES string table.
   . The texture replacer will now default to the original texture/palette/mip settings.

- v0.55 - (08/03/2009)
   . Fixed various issues with Common pac files.
   . Fixed an issue with certain compressed files. Character selection portraits are now supported.
   . Added support for more image formats (bmp, gif, jpg, still waiting on TGA)
   . Started incorporating change tracking which offers improvements such as:
      a. Active discovery; Nodes will only be interpreted as they are browsed. Helps with large/embedded files.
      b. Only portions of the tree that have changed will be re-built.
      c. Unchanged nodes will be copied back as-is. This helps with speed and compatibility.
   . Removed Managed DirectX 9 dependency. Was causing assembly problems.
   . Added child-only properties

- v0.54 - (08/01/2009)
   . Fixed a bug during texture replacing that was causing problems in some files (common pacs).
   . Added various improvements to MDL0 file browsing.
   . Confirmed successful rebuilding of 'common' files.

- v0.53b - (07/29/2009)
   . Fixed a bug dealing with vertex/color data types by removing vertex parsing.

- v0.53 - (07/25/2009)
   . Added minor support for the following brres resources (fixes some texture replacing issues):
      a. AnmVis (VIS0)
      b. AnmScn (SCN0)
      c. AnmTexShp (SHP0)
      d. AnmTexSrt (SRT0)
      e. AnmTexPat (PAT0)
   . Confirmed successful rebuilding of stage files.

- v0.52c - (07/23/2009)
   . Added some support for CHR0 and CLR0 animations.
   . A bit more support for MDL0 files (can browse data info)
   . Fixed an issue with character files with transformations.

- v0.52b - (07/17/2009)
   . Fixed a few small bugs with brres generation.
   . Confirmed texture replacement works, so long as the same texture format is used.

- v0.52 - (07/16/2009)
   . All texture formats are now supported for replacing.
   . Texture replacer has been updated to allow indexed textures.
   . Nodes can now be inserted/deleted/moved.
   . Added some support for MDL0 and brsar files. (Entry viewing only)
   . Remade node structure (again). Archives are rebuilt entirely when they are saved.
   . PCS files compress a little faster.
   . Added About window.

- v0.51 - (06/28/2009)
   . Texture replacing works fairly well, still doesn't support indexed textures.
   . Program can display/generate mipmaps. (Use the arrows on the preview panel to change mip level)
   . Node move/resize functions, allows for better data replacement
   . PCS entries are now re-packed before saving
   . Embedded PCS nodes are better supported
   
- v0.50 - (06/23/2009)
   . Original release


Title: Re: About DAE to MDL0 Conversion
Post by: Eternal Yoshi on December 13, 2010, 08:46:05 PM
I'm pretty sure we would have to define EVERYTHING in .mdl0 first.
SO start there.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 13, 2010, 08:49:16 PM
Yep, I'm looking for offsets for everything now.
I'm going to update the main post as things progress.


Title: Re: About DAE to MDL0 Conversion
Post by: TheShyGuy on December 13, 2010, 09:27:20 PM
lol if you need info on mdl0 ..look at the bone tree editor thread and material collab...tcll is doing mostly everything. He made a template which has lots of offsets done


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 13, 2010, 09:44:28 PM
Awesome.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 10:16:56 AM
here: ^_^

Code:
<?xml version="1.0"?>
<!DOCTYPE binary_file_format SYSTEM "BinaryFileFormat.dtd">
<binary_file_format name="MDL0" type_name="" comment="" expr="" default_byte_order="big" default_read_only="false" default_char_set="ansi">
<define_struct type_name="offset_name" comment="" expr="">
<data type="int" name="str_len" format="unsigned" len="1" display=""/>
<data type="string" name="name" format="ascii" len="str_len" display=""/>
</define_struct>
<define_struct type_name="bounds" comment="" expr="">
<data type="int" name="min_X" format="unsigned" len="4" display=""/>
<data type="int" name="min_Y" format="unsigned" len="4" display=""/>
<data type="int" name="min_Z" format="unsigned" len="4" display=""/>
<data type="int" name="max_X" format="unsigned" len="4" display=""/>
<data type="int" name="max_Y" format="unsigned" len="4" display=""/>
<data type="int" name="max_Z" format="unsigned" len="4" display=""/>
<data type="none" name="pad" len="8"/>
</define_struct>
<define_struct type_name="relocation_group" comment="" expr="">
<data type="int" name="block_len" format="unsigned" len="4" display=""/>
<data type="int" name="num_offsets" format="unsigned" len="4" display=""/>
<data type="int" name="tag" format="unsigned" len="4" display="hex"/>
<data type="int" name="unk1" format="unsigned" len="2" display="hex"/>
<data type="int" name="unk2" format="unsigned" len="2" display="hex"/>
<data type="int" name="pad" format="unsigned" len="8" display="hex"/>
</define_struct>
<define_struct type_name="relocation_offset" comment="" expr="">
<data type="int" name="ID" format="unsigned" len="2" display=""/>
<data type="int" name="unk1" format="unsigned" len="2" display="hex"/>
<data type="int" name="unk2" format="unsigned" len="2" display="hex"/>
<data type="int" name="unk3" format="unsigned" len="2" display="hex"/>
<data type="int" name="string_offset" format="unsigned" len="4" display=""/>
<data type="int" name="data_offset" format="unsigned" len="4" display=""/>
</define_struct>
<define_struct type_name="Definitions" comment="" expr="">
<for name="type" count="" stop_test="this.type == 1" type_name="" comment="">
<struct name="" type_name="" comment="" expr="type{this.type}">
<data type="int" name="type" format="unsigned" len="1" display=""/>
<if test="type == 2" comment="">
<struct name="t2" type_name="" comment="" expr="({this.ID1},{this.ID2})">
<data type="int" name="ID1" format="unsigned" len="2" display=""/>
<data type="int" name="ID2" format="unsigned" len="2" display=""/>
</struct>
</if>
<if test="type == 3" comment="">
<struct name="t3" type_name="" comment="" expr="({this.ID}) ({this.count})">
<data type="int" name="ID" format="unsigned" len="2" display=""/>
<data type="int" name="count" format="unsigned" len="1" display=""/><for name="tmp" count="count || count - 1" stop_test="count == 0" type_name="" comment=""><data type="none" name="" len="6"/></for></struct>
</if>
<if test="type == 4" comment="">
<struct name="t4" type_name="" comment="" expr="({this.ID1},{this.ID2},{this.ID3},{this.ID4})">
<data type="int" name="ID1" format="unsigned" len="2" display=""/>
<data type="int" name="ID2" format="unsigned" len="2" display=""/>
<data type="int" name="ID3" format="unsigned" len="2" display=""/>
<data type="int" name="ID4" format="unsigned" len="1" display=""/>
</struct>
</if>
<if test="type == 5" comment="">
<struct name="t5" type_name="" comment="" expr="({this.ID1},{this.ID2})">
<data type="int" name="ID1" format="unsigned" len="2" display=""/>
<data type="int" name="ID2" format="unsigned" len="2" display=""/>
</struct>
</if>
</struct>
</for>
</define_struct>
<define_struct type_name="Bones" comment="" expr="">
<struct name="bone_header" type_name="" comment="" expr="">
<data type="int" name="header_len" len="4" format="unsigned" display=""/>
<data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
<data type="int" name="string_offset" len="4" format="unsigned" display=""/>
<data type="int" name="bone_index" len="4" format="unsigned" display=""/>
<data type="int" name="node_ID" len="4" format="unsigned" display=""/>
<data type="int" name="flags" len="4" format="unsigned" display=""/>
<data type="int" name="pad" len="8" format="unsigned" display=""/>
<struct name="loc_rot_sca" type_name="" comment="" expr="">
<data type="int" name="sca_X" format="unsigned" len="4" display=""/>
<data type="int" name="sca_Y" len="4" format="unsigned" display=""/>
<data type="int" name="sca_Z" len="4" format="unsigned" display=""/>
<data type="int" name="rot_X" len="4" format="unsigned" display=""/>
<data type="int" name="rot_Y" len="4" format="unsigned" display=""/>
<data type="int" name="rot_Z" len="4" format="unsigned" display=""/>
<data type="int" name="loc_X" len="4" format="unsigned" display=""/>
<data type="int" name="loc_Y" len="4" format="unsigned" display=""/>
<data type="int" name="loc_Z" len="4" format="unsigned" display=""/>
</struct>
<struct name="bound" type_name="" comment="" expr="">
<data type="int" name="min_X" len="4" format="unsigned" display=""/>
<data type="int" name="min_Y" len="4" format="unsigned" display=""/>
<data type="int" name="min_Z" len="4" format="unsigned" display=""/>
<data type="int" name="max_X" len="4" format="unsigned" display=""/>
<data type="int" name="max_Y" len="4" format="unsigned" display=""/>
<data type="int" name="max_Z" len="4" format="unsigned" display=""/>
</struct>
<data type="int" name="parent" len="4" format="signed" display=""/>
<data type="int" name="child" len="4" format="unsigned" display=""/>
<data type="int" name="next" len="4" format="unsigned" display=""/>
<data type="int" name="prev" len="4" format="unsigned" display=""/>
<data type="int" name="part2" len="4" format="unsigned" display=""/>
</struct>
<struct name="frame_matrix" type_name="" comment="" expr="">
<data type="int" name="s_1_1" format="signed" len="4" display=""/>
<data type="int" name="s_2_1" format="signed" len="4" display=""/>
<data type="int" name="s_3_1" format="signed" len="4" display=""/>
<data type="int" name="s_4_1" format="signed" len="4" display=""/>
<data type="int" name="s_1_2" format="signed" len="4" display=""/>
<data type="int" name="s_2_2" format="signed" len="4" display=""/>
<data type="int" name="s_3_2" format="signed" len="4" display=""/>
<data type="int" name="s_4_2" format="signed" len="4" display=""/>
<data type="int" name="s_1_3" format="signed" len="4" display=""/>
<data type="int" name="s_2_3" format="signed" len="4" display=""/>
<data type="int" name="s_3_3" format="signed" len="4" display=""/>
<data type="int" name="s_4_3" format="signed" len="4" display=""/>
</struct>
<struct name="inverse_matrix" type_name="" comment="" expr="">
<data type="int" name="s_1_1" format="signed" len="4" display=""/>
<data type="int" name="s_2_1" format="signed" len="4" display=""/>
<data type="int" name="s_3_1" format="signed" len="4" display=""/>
<data type="int" name="s_4_1" format="signed" len="4" display=""/>
<data type="int" name="s_1_2" format="signed" len="4" display=""/>
<data type="int" name="s_2_2" format="signed" len="4" display=""/>
<data type="int" name="s_3_2" format="signed" len="4" display=""/>
<data type="int" name="s_4_2" format="signed" len="4" display=""/>
<data type="int" name="s_1_3" format="signed" len="4" display=""/>
<data type="int" name="s_2_3" format="signed" len="4" display=""/>
<data type="int" name="s_3_3" format="signed" len="4" display=""/>
<data type="int" name="s_4_3" format="signed" len="4" display=""/>
</struct>
</define_struct>
<define_struct type_name="Vertices" comment="" expr="">
<struct name="vertice_header" type_name="" comment="" expr="">
<data type="int" name="block_size" len="4" format="unsigned" display=""/>
<data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
<data type="int" name="data_offset" len="4" format="unsigned" display=""/>
<data type="int" name="string_offset" len="4" format="unsigned" display=""/>
<data type="int" name="ID" len="4" format="unsigned" display=""/>
<data type="int" name="isXYZ" len="4" format="unsigned" display=""/>
<data type="int" name="type" len="4" format="unsigned" display=""/>
<data type="int" name="modifier" len="1" format="unsigned" display=""/>
<data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
<data type="int" name="num_vertices" len="2" format="unsigned" display=""/>
<if test="isXYZ == 1" comment="">
<use_struct name="bounds" expr="" type_name="bounds" comment=""/>
</if>
</struct>
<data type="string" name="vertices" len="vertice_header.entry_stride * vertice_header.num_vertices" format="default" display="vert structures" comment="I could've put a 'FOR' here,
but it'd take too long when loading the file"/>
<data type="none" name="pad" len="vertice_header.block_size - (vertice_header.entry_stride*vertice_header.num_vertices) - vertice_header.data_offset"/>
</define_struct>
<define_struct type_name="Normals" comment="" expr="">
<struct name="normal_header" type_name="" comment="" expr="">
<data type="int" name="block_size" len="4" format="unsigned" display=""/>
<data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
<data type="int" name="data_offset" len="4" format="unsigned" display=""/>
<data type="int" name="string_offset" len="4" format="unsigned" display=""/>
<data type="int" name="ID" len="4" format="unsigned" display=""/>
<data type="int" name="isXYZ" len="4" format="unsigned" display=""/>
<data type="int" name="type" len="4" format="unsigned" display=""/>
<data type="int" name="modifier" len="1" format="unsigned" display=""/>
<data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
<data type="int" name="num_normals" len="2" format="unsigned" display=""/>
<if test="isXYZ == 1" comment="">
<use_struct name="bounds" expr="" type_name="bounds" comment=""/>
</if>
</struct>
<data type="string" name="normals" format="default" display="normal structures" len="normal_header.entry_stride*normal_header.num_normals" comment="I could've put a 'FOR' here,
but it'd take too long when loading the file"/>
<data type="none" name="pad" len="normal_header.block_size - (normal_header.entry_stride*normal_header.num_normals) - normal_header.data_offset"/>
</define_struct>
<define_struct type_name="Colors" comment="" expr="">
<struct name="color_header" type_name="" comment="" expr="">
<data type="int" name="block_size" len="4" format="signed" display=""/>
<data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
<data type="int" name="data_offset" len="4" format="signed" display=""/>
<data type="int" name="string_offset" len="4" format="signed" display=""/>
<data type="int" name="ID" len="4" format="signed" display=""/>
<data type="int" name="isRGBA" len="4" format="signed" display=""/>
<data type="int" name="type" len="4" format="signed" display=""/>
<data type="int" name="entry_stride" len="1" format="signed" display=""/>
<data type="int" name="modifier" len="1" format="signed" display=""/>
<data type="int" name="num_colors" len="2" format="signed" display=""/>
</struct>
<for name="color" count="color_header.num_colors || color_header.num_colors - 1" stop_test="color_header.num_colors == 0" type_name="" comment="">
<data type="none" name="color" len="color_header.entry_stride"/>
</for>
<data type="none" name="pad" len="color_header.block_size - (color_header.num_colors*color_header.entry_stride) - 32"/>
</define_struct>
<define_struct type_name="UV_Points" comment="" expr="">
<struct name="UV_header" type_name="" comment="" expr="">
<data type="int" name="block_size" len="4" format="unsigned" display=""/>
<data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
<data type="int" name="data_offset" len="4" format="unsigned" display=""/>
<data type="int" name="string_offset" len="4" format="unsigned" display=""/>
<data type="int" name="ID" len="4" format="unsigned" display=""/>
<data type="int" name="isXY" len="4" format="unsigned" display=""/>
<data type="int" name="type" len="4" format="unsigned" display=""/>
<data type="int" name="modifier" len="1" format="unsigned" display=""/>
<data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
<data type="int" name="num_UVs" len="2" format="unsigned" display=""/>
<if test="isXY == 1" comment="">
<struct name="bounds" expr="" type_name="" comment="">
<data type="int" name="min_X" format="unsigned" len="4" display=""/>
<data type="int" name="min_Y" format="unsigned" len="4" display=""/>
<data type="int" name="max_X" format="unsigned" len="4" display=""/>
<data type="int" name="max_Y" format="unsigned" len="4" display=""/>
<data type="none" name="pad" len="16"/>
</struct>
</if>
</struct>
<data type="string" name="UVs" len="UV_header.entry_stride * UV_header.num_UVs" format="default" display="uv structures" comment="I could've put a 'FOR' here,
but it'd take too long when loading the file"/>
<data type="none" name="pad" len="UV_header.block_size - (UV_header.entry_stride*UV_header.num_UVs) - UV_header.data_offset"/>
</define_struct>
<define_struct type_name="Shaders" comment="" expr="">
<struct name="header" type_name="" comment="" expr="">
<data type="int" name="block_size" len="4" format="unsigned" display=""/>
<data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
<data type="int" name="string_offset" len="4" format="unsigned" display=""/>
<data type="int" name="ID" len="4" format="unsigned" display=""/>
<data type="int" name="unk1" len="4" format="unsigned" display=""/>
<data type="int" name="textures" len="1" format="unsigned" display=""/>
<data type="int" name="num_layers" len="1" format="unsigned" display=""/>
<data type="int" name="Flag3" len="1" format="unsigned" display=""/>
<data type="int" name="Flag4" len="1" format="unsigned" display=""/>
<data type="int" name="type" len="4" format="unsigned" display=""/>
<data type="int" name="Flag5" len="1" format="unsigned" display=""/>
<data type="int" name="Flag6" len="1" format="unsigned" display=""/>
<data type="int" name="Flag7" len="1" format="unsigned" display=""/>
<data type="int" name="Flag8" len="1" format="unsigned" display=""/>
<data type="int" name="unk3" format="unsigned" len="4" display=""/>
<data type="int" name="unk4" format="signed" len="4" display=""/>
<data type="int" name="material_offset" format="signed" len="4" display=""/>
<data type="int" name="num_textures" format="signed" len="4" display=""/>
<data type="int" name="textures_offset" format="signed" len="4" display=""/>
<data type="int" name="P4_offset" format="signed" len="4" display=""/>
<data type="int" name="P5_offset" format="signed" len="4" display=""/>
<data type="int" name="P6_offset" format="signed" len="4" display=""/>
</struct>
<jump offset="header.material_offset+(header.MDL0_offset*-1)" comment="" origin="start">
<use_struct name="Material_Reference" expr="" type_name="Materials" comment=""/>
</jump>
<if test="header.textures_offset != 0" comment="">
<jump offset="header.textures_offset+(header.MDL0_offset*-1)" comment="" origin="start">
<for name="texture" count="header.textures || header.textures -1" stop_test="header.textures == 0" type_name="" comment="">
<struct name="texture" type_name="" comment="" expr="{this.offset_name.name}">
<data type="int" name="string_offset" format="signed" len="4" display=""/>
<data type="int" name="pad" len="4" format="signed" display=""/>
<data type="int" name="unk1" format="signed" len="4" display=""/>
<data type="int" name="unk2" format="signed" len="4" display=""/>
<data type="int" name="unk3" format="signed" len="4" display=""/>
<data type="int" name="unk4" format="signed" len="4" display=""/>
<data type="int" name="layerID1" format="signed" len="4" display=""/>
<data type="int" name="layerID2" format="signed" len="4" display=""/>
<data type="int" name="unk5" format="signed" len="4" display=""/>
<data type="int" name="unk6" format="signed" len="4" display=""/>
<data type="int" name="float" format="unsigned" len="4" display=""/>
<data type="int" name="unk7" format="signed" len="4" display=""/>
<data type="int" name="unk8" format="signed" len="4" display=""/>
<jump offset="string_offset -53" comment="" origin="current">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</jump>
</if>
<if test="header.P4_offset != 0" comment="">
<jump offset="header.P4_offset+(header.MDL0_offset*-1)" comment="" origin="start">
<struct name="P4" type_name="" comment="" expr="">
<data type="int" name="tmp" format="signed" len="4" display=""/>
</struct>
</jump>
</if>
<if test="header.P5_offset != 0" comment="">
<jump offset="header.P5_offset+(header.MDL0_offset*-1)" comment="" origin="start">
<struct name="P5" type_name="" comment="" expr="">
<data type="none" name="tmp" len="384"/>
</struct>
</jump>
</if>
<if test="header.P6_offset != 0" comment="">
<jump offset="header.P6_offset+(header.MDL0_offset*-1)" comment="" origin="start">
<struct name="P6" type_name="" comment="" expr="">
<data type="none" name="tmp" len="384"/>
</struct>
</jump>
</if>
</define_struct>
<define_struct type_name="Materials" comment="" expr="">
<struct name="header" type_name="" comment="" expr="">
<data type="int" name="block_length" format="signed" len="4" display=""/>
<data type="int" name="MDL0_offset" format="signed" len="4" display=""/>
<data type="int" name="ID" format="signed" len="4" display=""/>
<data type="int" name="unk" format="unsigned" len="1" display=""/>
</struct>
<data type="none" name="tmp" len="header.block_length - 13"/>
</define_struct>
<define_struct type_name="Polygons" comment="" expr="">
<struct name="header" type_name="" comment="" expr="">
<data type="none" name="tmp" len="4"/>
</struct>
</define_struct>
<define_struct type_name="Textures" comment="" expr="">
<data type="int" name="textures" format="signed" len="4" display=""/>
<for name="texture" count="textures || textures - 1" stop_test="textures == 0" type_name="" comment="">
<struct name="texture" type_name="" comment="" expr="X: {this.X}, Y: {this.Y}">
<data type="int" name="X" format="unsigned" len="4" display=""/>
<data type="int" name="Y" format="unsigned" len="4" display=""/>
</struct>
</for>
</define_struct>
<define_struct type_name="Pallets" comment="" expr="">
<data type="int" name="pallets" format="signed" len="4" display=""/>
<for name="pallet" count="pallets || pallets - 1" stop_test="pallets == 0" type_name="" comment="">
<struct name="texture" type_name="" comment="" expr="X: {this.X}, Y: {this.Y}">
<data type="int" name="X" format="unsigned" len="4" display=""/>
<data type="int" name="Y" format="unsigned" len="4" display=""/>
</struct>
</for>
</define_struct>
<struct name="header" type_name="" comment="" expr="">
<data type="string" name="magic" len="4" format="ascii" display=""/>
<data type="int" name="filesize" format="unsigned" len="4" display=""/>
<data type="int" name="sections" format="unsigned" len="4" display=""/>
<data type="int" name="nodes" format="signed" len="4" display=""/>
<struct name="lists" type_name="" comment="" expr="">
<data type="int" name="Definitions" format="unsigned" len="4" display=""/>
<data type="int" name="Bones" format="unsigned" len="4" display=""/>
<data type="int" name="Vertices" format="unsigned" len="4" display=""/>
<data type="int" name="Normals" format="unsigned" len="4" display=""/>
<data type="int" name="Colors" format="unsigned" len="4" display=""/>
<data type="int" name="UV_Points" format="unsigned" len="4" display=""/>
<data type="int" name="Shaders" format="unsigned" len="4" display=""/>
<data type="int" name="Materials" format="unsigned" len="4" display=""/>
<data type="int" name="Polygons" format="unsigned" len="4" display=""/>
<data type="int" name="Textures" format="unsigned" len="4" display=""/>
<data type="int" name="Pallets" format="unsigned" len="4" display=""/>
</struct>
<data type="int" name="name_offset" format="unsigned" len="4" display=""/>
<data type="int" name="header_len" format="unsigned" len="4" display=""/>
<data type="int" name="header_offset" format="signed" len="4" display=""/>
<data type="int" name="unk1" format="unsigned" len="4" display=""/>
<data type="int" name="unk2" format="unsigned" len="4" display=""/>
<data type="int" name="num_verticies" format="unsigned" len="4" display=""/>
<data type="int" name="num_faces" format="unsigned" len="4" display=""/>
<data type="int" name="unk3" format="unsigned" len="4" display=""/>
<data type="int" name="num_nodes" format="unsigned" len="4" display=""/>
<data type="int" name="version" format="unsigned" len="4" display=""/>
<data type="int" name="unk4" format="unsigned" len="2" display=""/>
<data type="int" name="unk5" format="unsigned" len="2" display=""/>
<struct name="bounds" type_name="" comment="" expr="">
<data type="int" name="min_X" format="unsigned" len="4" display=""/>
<data type="int" name="min_Y" format="unsigned" len="4" display=""/>
<data type="int" name="min_Z" format="unsigned" len="4" display=""/>
<data type="int" name="max_X" format="unsigned" len="4" display=""/>
<data type="int" name="max_Y" format="unsigned" len="4" display=""/>
<data type="int" name="max_Z" format="unsigned" len="4" display=""/>
</struct>
</struct>
<jump offset="header.nodes * -1" comment="" origin="start">
<struct name="nodes" type_name="" comment="" expr="">
<data type="int" name="num_nodes" format="signed" len="4" display=""/>
<for name="node" count="num_nodes || num_nodes - 1" stop_test="num_nodes == 0" type_name="" comment="">
<data type="int" name="node" format="signed" len="4" display=""/>
</for>
</struct>
</jump>
<if test="header.lists.Definitions != 0" comment="">
<jump offset="header.lists.Definitions" comment="" origin="start">
<struct name="Definitions" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Definitions" comment="" origin="start">
<use_struct name="Definitions" expr="" type_name="Definitions" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Definitions - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Bones != 0" comment="">
<jump offset="header.lists.Bones" comment="" origin="start">
<struct name="Bones" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Bones" comment="" origin="start">
<use_struct name="Bone_data" expr="" type_name="Bones" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Bones - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Vertices != 0" comment="">
<jump offset="header.lists.Vertices" comment="" origin="start">
<struct name="Vertices" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Vertices" comment="" origin="start">
<use_struct name="Vertices" expr="" type_name="Vertices" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Vertices - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Normals != 0" comment="">
<jump offset="header.lists.Normals" comment="" origin="start">
<struct name="Normals" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Normals" comment="" origin="start">
<use_struct name="Normals" expr="" type_name="Normals" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Normals - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Colors != 0" comment="">
<jump offset="header.lists.Colors" comment="" origin="start">
<struct name="Colors" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Colors" comment="" origin="start">
<use_struct name="Colors" expr="" type_name="Colors" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Colors - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.UV_Points != 0" comment="">
<jump offset="header.lists.UV_Points" comment="" origin="start">
<struct name="UV_Points" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.UV_Points" comment="" origin="start">
<use_struct name="UV_Points" expr="" type_name="UV_Points" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.UV_Points - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Shaders != 0" comment="">
<jump offset="header.lists. Shaders" comment="" origin="start">
<struct name="Shaders" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Shaders" comment="" origin="start">
<use_struct name="Shaders" expr="" type_name="Shaders" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Shaders - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Materials != 0" comment="">
<jump offset="header.lists.Materials" comment="" origin="start">
<struct name="Materials" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Materials" comment="" origin="start">
<use_struct name="Materials" expr="" type_name="Materials" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Materials - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Polygons != 0" comment="">
<jump offset="header.lists.Polygons" comment="" origin="start">
<struct name="Polygons" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Polygons" comment="" origin="start">
<use_struct name="Polygons" expr="" type_name="Polygons" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Polygons - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Textures != 0" comment="">
<jump offset="header.lists.Textures" comment="" origin="start">
<struct name="Textures" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Textures" comment="" origin="start">
<use_struct name="Textures" expr="" type_name="Textures" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Textures - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<if test="header.lists.Pallets != 0" comment="">
<jump offset="header.lists.Pallets" comment="" origin="start">
<struct name="Pallets" type_name="" comment="" expr="">
<use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
<for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
<struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
<use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
<jump offset="relocation_offset.data_offset + header.lists.Pallets" comment="" origin="start">
<use_struct name="Pallets" expr="" type_name="Pallets" comment=""/>
</jump>
<jump offset="relocation_offset.string_offset + header.lists.Pallets - 1" comment="" origin="start">
<use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
</jump>
</struct>
</for>
</struct>
</jump>
</if>
<data type="none" name="none"/>
</binary_file_format>

Quote
you'll need HexEdit for this to work...
[url]http://www.smashboards.com/showpost.php?p=11656041&postcount=2778[/url]

copy the template, and paste it in:
C:\Documents and Settings\*user*\Application Data\ECSoftware\HexEdit\_mdl0.xml
and open an mdl0 file in HexEdit...

now, the template doesn't initiate automatically :/
when you open the mdl0,
go to 'view'-'template'-'split window'
and be sure to turn the auto sync on as well (looks like 3 red arrows "back, forth, back")

also, be sure to R-Click 'MDL0' and click 'Allow Editing'.
(it takes a while to load, but there's no errors with it this way)


heh...
the more help I get in learning the format, the faster I'll be able to build a 2-way (complete) converter. :D
Will's is uncomplete, but returns a working mesh (verts, normals, uv's, and faces)
AIS returns alot more, but is glitchy and still doesn't cover everything.

also...
dae is ascii (text)
mdl0 is binary (hex)

I'm trying to convert between collada 140 and 141

glad to have some help :D
FINALLY

there's currently alot to be known before a perfect mdl0 can be written from scratch...

also, I have the AIS src...
but... I can't read C codes :/
I progg in Py, or HTML/JS >_>


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 04:29:02 PM
I know a little C#, or is AiS in C/C++? I have a couple friends who are good at C/C++ coding too. ;)

I have no clue how the daes are made, but I do know that they are in ascii (xml), and I'm pretty good with looking over binary. I think I found a thread somewhere that listed all the parts of an mdl0, I'll try to find it


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 04:52:50 PM
I know a little C#, or is AiS in C/C++? I have a couple friends who are good at C/C++ coding too. ;)

nice :D
here's the src: http://www.filefactory.com/file/b29fah4/n/ais_rar
took me FOREVER to find btw D:>
Quote
I have no clue how the daes are made, but I do know that they are in ascii (xml), and I'm pretty good with looking over binary. I think I found a thread somewhere that listed all the parts of an mdl0, I'll try to find it

ah... I see...
do you have any 140 or 141 files that import perfectly into blender??
I need a template to tell me how it works :/
140 has a VGroup prob, and 141 has a UV and bone prob on my end...
can't build a template out of files that don't work :/

I could look online too, so it's ok if you don't have any ;)

and yea, can't wait for that thread :D
*waits patiently* :P


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 05:20:12 PM
I have blender, but it never works properly for me... I use 3ds max 8 and 2010 instead. I just tried to import a dae into it, and 1.4 had a script error :(

I couldn't find the exact thread, but Brawlbox does have a file for mdl0s, it's in C#:
http://code.google.com/p/brawltools/source/browse/trunk/BrawlLib/SSBB/Types/MDL0.cs

I'll take a look at the AiS source.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 05:32:38 PM
heh...
can't afford 3DS and don't wanna deal with dreaded blue screen again
here I thought 3DS was good, but after it destroyed my cpu twice... yea...

btw, I've got a copy of every src from brbx saved...

brawllib contains the structures... (I can read vars) :P

EDIT:
well today was kinda a blowoff day for me :P
I'm not getting help with either of the MDL0 or DAT formats... DX
so I've been on YT and random sites, just doin... stuff...


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 06:25:41 PM
You dont happen to have a file called Dae.h, do you? I need it to build the source :-\

Lately I've been working on Nel.
...and trying to convert a model I have in PMD and X format to any other format that's importable with 3ds max... no luck yet with that, I've tried everything :notimp:


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 06:41:34 PM
You dont happen to have a file called Dae.h, do you? I need it to build the source :-\
lol...
I just deleted it (the entire DOM) XD
I'll retrieve it right now
Quote
Lately I've been working on Nel.
...and trying to convert a model I have in PMD and X format to any other format that's importable with 3ds max... no luck yet with that, I've tried everything :notimp:

O.O did you say PMD...
there's a blender importer for that you know...
it may, or may not work for your file :/

roo525 wanted me to import a pmd of Flandre


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 06:56:14 PM
Like I said, blender is stupid for me :( I got a script error importing it, I think I have to switch Blender to Japanese but I have no clue how to do that 0_o figured out how to switch it, but I still get an error  >:(

Could you try and export it as a DAE for me? lol and thanks for getting dae.h for me

It's Yoko Littner
http://www.mediafire.com/?kekova24i5nei61


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 07:19:18 PM
KK...
here's dae.h:
Code:
/*
* Copyright 2006 Sony Computer Entertainment Inc.
*
* Licensed under the MIT Open Source License, for details please see license.txt or the website
* http://www.opensource.org/licenses/mit-license.php
*
*/

#ifndef __DAE__
#define __DAE__

// We use the boost filesystem library for cross-platform file system support. You'll need
// to have boost on your machine for this to work. For the Windows build boost is provided
// in the external-libs folder, but for Linux it's expected that you'll install a boost
// obtained via your distro's package manager. For example on Debian/Ubuntu, you can run
//   apt-get install libboost-filesystem-dev
// to install the boost filesystem library on your machine.
//
// Disable the warnings we get from Boost
// warning C4180: qualifier applied to function type has no meaning; ignored
// warning C4245: 'argument' : conversion from 'int' to 'boost::filesystem::system_error_type',
//   signed/unsigned mismatch
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4180 4245)
#endif
#ifndef NO_BOOST
#include <boost/filesystem/convenience.hpp>       // THIS WAS NOT COMMENTED.
#endif
#ifdef _MSC_VER
#pragma warning(pop)
#endif

#include <dae/daeTypes.h>
#include <dae/daeError.h>
#include <dae/daeDatabase.h>
#include <dae/daeIOPlugin.h>
#include <dae/daeAtomicType.h>
#include <dae/daeMetaElement.h>
#include <dae/daeIDRef.h>
#include <dae/daeURI.h>
#include <dae/daeUtils.h>
#include <dae/daeRawResolver.h>
#include <dae/daeSIDResolver.h>

class domCOLLADA;
typedef daeSmartRef<domCOLLADA> domCOLLADARef;
class daeDatabase;

// The DAE class is the core interface via which you interact with the DOM. It
// has methods to load/save documents, get the root element of each document,
// etc. Although internally the DOM works exclusively with URIs, the methods of
// the DAE class that take document paths can take URIs or OS-specific file
// paths.
class DLLSPEC DAE
{
public:
// Constructor. If no database or IO plugin are provided, a default database and
// IO plugin will be used.
DAE(daeDatabase* database = NULL, daeIOPlugin* ioPlugin = NULL)
  : atomicTypes(*this),
    baseUri(*this, cdom::getCurrentDirAsUri().c_str())
{
// See the end of the thread linked below for an explanation of why we have the DAE
// constructor set up this way. Basically, I'm going to be changing the build output
// location, and when this happens people sometimes continue to link against the old
// libraries by accident (e.g. if they just do an svn update). By introducing a new
// function that gets called from a function in a header file, I'm ensuring that someone
// who tries linking against old libraries will get a link error. This may not sound
// very nice, but it's certainly better than getting bizarre runtime crashes.
// https://collada.org/public_forum/viewtopic.php?t=771&sid=f13c34f2d17ca720c5021bccbe5128b7
init(database, ioPlugin);
dummyFunction1();
}

virtual ~DAE();

// Release all memory used by the DOM. You never need to call this explicitly. It's
// called automatically when all DAE objects go out of scope.
    // Deletes directory returned by cdom::getSafeTmpDir().
static void cleanup();

public:
// Database setup
virtual daeDatabase* getDatabase();
virtual daeInt setDatabase(daeDatabase* database);

// IO Plugin setup
virtual daeIOPlugin* getIOPlugin();
virtual daeInt setIOPlugin(daeIOPlugin* plugin);

// Creates a new document, returning null on failure.
virtual domCOLLADA* add(const std::string& path);
// Opens an existing document, returning null on failure.
virtual domCOLLADA* open(const std::string& path);
// Opens a document from memory, returning null on failure.
virtual domCOLLADA* openFromMemory(const std::string& path, daeString buffer);
// Write a document to the path specified by the document's URI, returning false on failure.
virtual bool write(const std::string& path);
// Write a document to the path specified in the second parameter, returning false on failure.
virtual bool writeTo(const std::string& docPath, const std::string& pathToWriteTo);
// Writes all documents, returning false if any document failed to write.
virtual bool writeAll();
// Close a specific document, unloading all memory used by the document. Returns false on failure.
virtual void close(const std::string& path);
// Remove all loaded documents. Always returns DAE_OK.
virtual daeInt clear();

// Returns the total number of documents.
virtual int getDocCount();
// Returns the i'th document .
virtual daeDocument* getDoc(int i);
// Returns a document matching the path.
virtual daeDocument* getDoc(const std::string& path);

// Get the root domCOLLADA object corresponding to a particular document.
virtual domCOLLADA* getRoot(const std::string& path);
// Set the root domCOLLADA object corresponding to a particular document, returning false on failure.
virtual bool        setRoot(const std::string& path, domCOLLADA* root);

// Returns the Collada version, i.e. 1.4, 1.5, etc. Note that this _isn't_ the
// same as the DOM version (1.3, 2.0, ...).
virtual daeString getDomVersion();

// Returns the (modifiable) list of atomic type objects.
daeAtomicTypeList& getAtomicTypes();

// Get/set a daeMetaElement object given the meta object's type ID.
daeMetaElement* getMeta(daeInt typeID);
void setMeta(daeInt typeID, daeMetaElement& meta);

// Get all daeMetaElement objects.
daeMetaElementRefArray& getAllMetas();

// Returns the list of URI resolvers. You can modify the list to add new resolvers.
daeURIResolverList& getURIResolvers();

// The base URI used for resolving relative URI references.
daeURI& getBaseURI();
void setBaseURI(const daeURI& uri);
void setBaseURI(const std::string& uri);

// Returns the list of ID reference resolvers. You can modify the list to add new
// resolvers.
daeIDRefResolverList& getIDRefResolvers();

// Meant for internal DOM use only.
daeRawRefCache& getRawRefCache();
daeSidRefCache& getSidRefCache();

// These functions specify the client's character encoding for the DOM. The
// default is Utf8, but if you specify Latin1 then the DOM will use libxml's
// character conversion functions to convert to Utf8 when writing data and
// convert to Latin1 when reading data. This can help with the handling of
// non-ASCII characters on Windows. Only when using libxml for xml I/O does
// any character conversion occur.
//
// Most people can probably just ignore this completely. If you have trouble
// with non-ASCII characters on Windows, try setting the char encoding to
// Latin1 to see if that helps.
//
// Frankly this certainly isn't the best way of handling non-ASCII character
// support on Windows, so this interface is a likely target for significant
// changes in the future.
//
// See this Sourceforge thread for more info:
// http://sourceforge.net/tracker/index.php?func=detail&aid=1818473&group_id=157838&atid=805426
//
enum charEncoding {
Utf8,
Latin1
};

// Global encoding setting. Defaults to Utf8. Set this if you want to make a
// char encoding change and apply it to all DAE objects.
static charEncoding getGlobalCharEncoding();
static void setGlobalCharEncoding(charEncoding encoding);

// Local encoding setting. If set, overrides the global setting. Useful for setting
// a specific char encoding for a single DAE object but not for all DAE objects.
charEncoding getCharEncoding();
void setCharEncoding(charEncoding encoding);

// Deprecated. Alternative methods are given.
virtual daeInt load(daeString uri, daeString docBuffer = NULL); // Use open
virtual daeInt save(daeString uri, daeBool replace=true); // Use write
virtual daeInt save(daeUInt documentIndex, daeBool replace=true); // Use write
virtual daeInt saveAs(daeString uriToSaveTo, daeString docUri, daeBool replace=true); // Use writeTo
virtual daeInt saveAs(daeString uriToSaveTo, daeUInt documentIndex=0, daeBool replace=true); // Use writeTo
virtual daeInt unload(daeString uri); // Use close
virtual domCOLLADA* getDom(daeString uri); // use getRoot
virtual daeInt      setDom(daeString uri, domCOLLADA* dom); // use setRoot

private:
void init(daeDatabase* database, daeIOPlugin* ioPlugin);
void dummyFunction1();
std::string makeFullUri(const std::string& path);
domCOLLADA* openCommon(const std::string& path, daeString buffer);
bool writeCommon(const std::string& docPath, const std::string& pathToWriteTo, bool replace);

daeDatabase *database;
daeIOPlugin *plugin;
bool defaultDatabase;
bool defaultPlugin;
daeAtomicTypeList atomicTypes;
daeMetaElementRefArray metas;
daeURI baseUri;
daeURIResolverList uriResolvers;
daeIDRefResolverList idRefResolvers;
daeRawRefCache rawRefCache;
daeSidRefCache sidRefCache;

std::auto_ptr<charEncoding> localCharEncoding;
static charEncoding globalCharEncoding;
};


template <typename T>
inline T *daeSafeCast(daeElement *element)
{
if (element  &&  element->typeID() == T::ID())
return (T*)element;
return NULL;
}


#endif // __DAE_INTERFACE__
didn't feel like UL-ing it :P


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 07:32:17 PM
Still won't build

*cough*
#include <dae/daeTypes.h>
#include <dae/daeError.h>
#include <dae/daeDatabase.h>
#include <dae/daeIOPlugin.h>
#include <dae/daeAtomicType.h>
#include <dae/daeMetaElement.h>
#include <dae/daeIDRef.h>
#include <dae/daeURI.h>
#include <dae/daeUtils.h>
#include <dae/daeRawResolver.h>
#include <dae/daeSIDResolver.h>
#include <dom/domCOLLADA.h>
#include <dom/domProfile_COMMON.h>
*cough*

Need those .h files too >.> Might want to upload them lol


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 07:33:25 PM
well...
just as I expected...
here's the VGroups that didn't import:
(http://lh4.ggpht.com/_IteXPmeC6ek/TQgnmhdBY7I/AAAAAAAACNQ/bkfIVwkCQ0k/s512/yoko_vg.jpg)

but other than those parts not being linked to the bones,
it's a pretty dang good model :D

(http://lh6.ggpht.com/_IteXPmeC6ek/TQgnnWmofRI/AAAAAAAACNU/XCKVKGQiJds/s512/y_mdl.jpg)

I don't think you want it with missing VGroups though...
they're quite alot of work to add :/

I'll see what I can get around to fixing on the script...
Flandre did the same thing:
(http://lh6.ggpht.com/_IteXPmeC6ek/TDkC_2nxq2I/AAAAAAAABO4/k1j8bJe_2HY/s512/1.jpg)
(http://lh4.ggpht.com/_IteXPmeC6ek/TDkC_py4yfI/AAAAAAAABOw/SmxZMbLJUMI/s512/3.jpg)
^ignore the 'Click Here'


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 07:35:45 PM
Still won't build

*cough*
#include <dae/daeTypes.h>
#include <dae/daeError.h>
#include <dae/daeDatabase.h>
#include <dae/daeIOPlugin.h>
#include <dae/daeAtomicType.h>
#include <dae/daeMetaElement.h>
#include <dae/daeIDRef.h>
#include <dae/daeURI.h>
#include <dae/daeUtils.h>
#include <dae/daeRawResolver.h>
#include <dae/daeSIDResolver.h>
#include <dom/domCOLLADA.h>
#include <dom/domProfile_COMMON.h>
*cough*

Need those .h files too >.> Might want to upload them lol


everything's in this:
http://sourceforge.net/projects/collada-dom/files/


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 07:41:23 PM
ignore the 'Click Here'

^^made me lol

And when you say Vgroups, you mean vertex groups right?

SO SHE WON'T HAVE HAIR???  :srs:

and I already downloaded the Collada Dom stuff earlier, didn't see any .h files?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 07:43:57 PM
ignore the 'Click Here'

^^made me lol

And when you say Vgroups, you mean vertex groups right?
yep
Quote
SO SHE WON'T HAVE HAIR???  :srs:

and I already downloaded the Collada Dom stuff earlier, didn't see any .h files?

she has hair, it just won't move anywhere is all...

and try searching the DOM (hit F3)


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 07:54:23 PM
Oh... well I don't mind her hair not moving for now, I just want to see the dae in 3ds max

And I swear I searched before, but now that you tell me to search, I find the files... ok then lol



Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 14, 2010, 08:03:18 PM
Oh... well I don't mind her hair not moving for now, I just want to see the dae in 3ds max

And I swear I searched before, but now that you tell me to search, I find the files... ok then lol



lawlz :P
I'm gonna try first though ;)


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 08:07:46 PM
Oh... well I don't mind her hair not moving for now, I just want to see the dae in 3ds max
I'm gonna try first though ;)

Good luck then :)

Tell me if it works


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 14, 2010, 08:19:34 PM
Tech's FIANALLY getting help with this. Congratz dude!!
Oh, hey there BlackJax. I've seen you stalking around on the forum games before. Nice to see you'll help us with this. :3

Wait, .Pmd's? Good times those where huh Tech? I got the Importer to work, but with the same non-working bone issues... as seen in the pics from tech above. :P
I still havent found an importer for 3DS unfortuantely, but the bones for the hands are sorta necessary for making a functioning character in Brawl.

Well, I'm still here to contribute alongside you guys... as little as I can. >_>


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 14, 2010, 08:34:27 PM
FIANALLY

Fianally indeed ;D

You guys got msn? Some random night, me, the guy who knows C++ and another guy I know are gonna pull an all nighter in a chat on teamviewer and work on reversing ais >: )


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 01:20:11 AM
FIANALLY


Fianally indeed ;D

You guys got msn? Some random night, me, the guy who knows C++ and another guy I know are gonna pull an all nighter in a chat on teamviewer and work on reversing ais >: )


O.O =3=
I got skool -.-
(o_o) oh wait... random... right... KK... lol
as long as it's not on a skool day ^_0

hey...
you may want will's converter as well...
^perfect polygons

can you at least MAJORLY comment on the code,
that way I know what's what :/

I really wanna figure this out too,
and no, I don't use the popular stuff... (msn, aim, yim, skype, etc.)
but I do use chatango... (only semi-popular)
it's on my website http://tcll5850.webfreehosting.net :)

heh... it's how I keep my cpu from getting viruses...
along with a few other procedures...
^(IE blocks EVERYTHING except for what I tell it to pass)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 02:26:26 AM
found a few things...
this only tells me of 141 though...
http://www.khronos.org/collada/

you got any references on 140??


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 01:42:52 PM
1. as long as it's not on a skool day ^_0


2. you may want will's converter as well...
^perfect polygons

3. can you at least MAJORLY comment on the code,
that way I know what's what :/

4. I do use chatango... (only semi-popular)
it's on my website [url]http://tcll5850.webfreehosting.net[/url] :)


1. I have 2 weeks off from skool starting next week lol but I'll get on chatango as well on the weekends

2. Already have it for reference

3. I'll comment the 5h!t out of it for ya  ;)

4. Mmmmmk, I'll try to keep you updated on there

I got nothin on 140, sorry.
And about your mdl0 template; I made the file and named it correctly and stuff and put it in the right directory, but it doesn't appear in the list of templates in hex edit...?




Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 03:51:25 PM
KK...

cool :D

and dang... =3=

about your prob...
you did include the underscore correct??
and it is an xml file right?? (not a txt '_mdl0.xml.txt')

also, I'm UD-ing Poly's btw
so there'll be a UD soon ;)


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 04:55:32 PM
about your prob...
you did include the underscore correct??
and it is an xml file right?? (not a txt '_mdl0.xml.txt')

also, I'm UD-ing Poly's btw
so there'll be a UD soon ;)

Yep, still doesn't work

UD=upload right? and what polys...?
If I interpreted that right then you said that I'm awesome :af:


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 05:19:55 PM
UD = UpDate
poly's = polygons

and no...
the PMD thing isn't done
it'll be a little before I can get to that :P


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 05:22:31 PM
haha kk figured

too many topics in one topic >.>

Edit: I wonder if it would be possible to inject a model into a polygon and vertset and then move the polygon around the model to make it fit in place... just an idea. You'd probably need to rebuild the mdl0 for that


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 07:05:47 PM
I wonder if it would be possible to inject a model into a polygon and vertset and then move the polygon around the model to make it fit in place...

I'll give you an obj example of how poly's work
first off, poly's are a certain number of points that make up a face...
one point will have 3 indexes ( vert/normal/UV )
now onto the types of poly's (going by number of points)
1 = point
2 = line
3 = triangle
4 = square (quad)
5> = multi-point polygon
note: obj files don't use advanced polygon techniques such as strips or fans

so here's how an obj file with would look like:

# 8 verts
v 0.0 0.0 0.0
v 1.0 0.0 0.0
v 0.0 1.0 0.0
v 0.0 0.0 1.0
v 1.0 1.0 0.0
v 0.0 1.0 1.0
v 1.0 0.0 1.0
v 1.0 1.0 1.0

#8 normals
vn 0.0 0.0 0.0
vn 1.0 0.0 0.0
vn 0.0 1.0 0.0
vn 0.0 0.0 1.0
vn 1.0 1.0 0.0
vn 0.0 1.0 1.0
vn 1.0 0.0 1.0
vn 1.0 1.0 1.0

#4 uv's
vt 0.0 0.0
vt 1.0 0.0
vt 0.0 1.0
vt 1.0 1.0

#5 faces
o zero
f 1/1/1 #point
f 1/1/1 2/2/2 #line
f 1/1/1 2/2/2 4/4/3 #tri
f 1/1/1 2/2/2 4/4/3 8/8/4 #quad

o one #these are objects btw
f 1 3 5 6 7 8 #poly

that obj should work btw ;)
I just made it up and typed it out :P


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 07:19:49 PM
I'll give you an obj example of how poly's work
first off, poly's are a certain number of points that make up a face...
one point will have 3 indexes ( vert/normal/UV )
now onto the types of poly's (going by number of points)
1 = point
2 = line
3 = triangle
4 = square (quad)
5> = multi-point polygon

Knew that

note: obj files don't use advanced polygon techniques such as strips or fans

so here's how an obj file with would look like:

# 8 verts
v 0.0 0.0 0.0
v 1.0 0.0 0.0
v 0.0 1.0 0.0
v 0.0 0.0 1.0
v 1.0 1.0 0.0
v 0.0 1.0 1.0
v 1.0 0.0 1.0
v 1.0 1.0 1.0

#8 normals
vn 0.0 0.0 0.0
vn 1.0 0.0 0.0
vn 0.0 1.0 0.0
vn 0.0 0.0 1.0
vn 1.0 1.0 0.0
vn 0.0 1.0 1.0
vn 1.0 0.0 1.0
vn 1.0 1.0 1.0

#4 uv's
vt 0.0 0.0
vt 1.0 0.0
vt 0.0 1.0
vt 1.0 1.0

#5 faces
o zero
f 1/1/1 #point
f 1/1/1 2/2/2 #line
f 1/1/1 2/2/2 4/4/3 #tri
f 1/1/1 2/2/2 4/4/3 8/8/4 #quad

o one #these are objects btw
f 1 3 5 6 7 8 #poly

that obj should work btw ;)
I just made it up and typed it out :P

Didn't know that.

Here's a load of questions, see how many you can answer lol:

So you're adding polys to your template?

What about vertices?

Does your template include the header for the mdl0? (All the hex from MDL0 to the load of ÿÿÿÿ)

What parts are you missing from your template?

I really need to get that template to work O_O

Teach me anything and everything you know :D


Title: Re: About DAE to MDL0 Conversion
Post by: ??_? on December 15, 2010, 07:21:50 PM
I'd love to help you guys, but idk sh!7 about Sh!7, so is there anything simple I can do for you?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 07:40:25 PM
@BJ96:
well everything that's done involves:
Definitions
...
UV Points
~
Tex1 (Textures)
Tex2 (Pallets)

Mat1 (Shaders) are about 40%
Mat2 (Materials) are about 8%

Polygons (Objects) are currently being worked on
by rightful terms, the Polygons sould really be called Objects as they are linked to the main scene

and also, try creating a new template and see if it appears in that directory...
what OS do you use??
I use WinXP Home


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 07:44:08 PM
Go find people who know C++. If they don't want to help, lay 5H17 down and hold up a gun and it should work.
And find topics, any topics, that have info on mdl0s. Any info at all.

@Tcll: Ok I'll try that, I'm running Win7 Home 32 bit. Work on that template like crazy, the more that's done the better

Edit: Hexedit won't read any templates I add


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 07:51:07 PM
ah...
well there's your problem :P
win7 has an entirely different setup compaired to winXP
try seeing if you can't find a directory similar to the one I gave you...

you may have a seperate App data folder for 32bit Apps
I know there's a Program Files 32

I havn't really been around 7 long enough to know what it's about...
nor do I care to :P
I'm a PC and Win7 was not my idea :3


Title: Re: About DAE to MDL0 Conversion
Post by: ??_? on December 15, 2010, 07:59:49 PM
I'm on xp but in a day or 2 I'm changin things up, 7xdark and ubuntu.  As soon as I do that I was gonna start experimenting with materials1 and 2


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 08:02:33 PM
lol this is the post where I swear my head off because all the other built-in templates are in the same directory as the one i'm adding and macs are just stupid.

WHAT THE **** HOLY **** WHY THE **** DOES THIS ****ING HAPPEN TO ****ING PCs! WHAT THE ****!

replace **** with the word of your choice

Edit 1: HEY WAIT... why don't I just modify a built in template? wow  *facepalm*

Edit 2: It still reads the original template! What the heck I think it's in a different directory, starting whole computer search


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 08:09:25 PM
@LH

dude...

7 sux entirely...
it's basically vista with batter nav and program compatibility...
you still have all the other errors it had

honestly...
stick with XP
it's better and more reliable...
maybe not as user friendly,
but it's better than security issues you can't disable DX

if you need any help with certain things at all,
hit me up and I'll see what I can do ;)

btw, if it's just for the looks you're going for...
I can prbly find you something :)

@BJ

hmm...
this didn't work for me...
but it's worth a shot...
try the program directory :/
there's a copy of all the templates in there...


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 08:16:57 PM
hmm...
this didn't work for me...
but it's worth a shot...
try the program directory :/
there's a copy of all the templates in there...

I got it to work. The directory I needed to put it in was in a hidden folder crammed into the depths of my computer. I wouldn't have found it without searching

Holy -blam!- this template is awesome, keep up the good work!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 08:21:44 PM
ah...

create a shortcut to there btw
you'll be modding that file constantly...

heh...
I guess the other files can be deleted :P

I've enabled hidden folders on my cpu btw, so I can see them...

what's the directory btw?? (for other people who own macs)


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 08:24:38 PM
I created a shortcut there and I have no idea why this would help mac users because I have a pc but it was

C:/users/yourusername/appdata/roaming/ecsoftware/hexedit

Also, when I open the template I have to close like, 100 popups saying "unrecognized member name for struct" by holding enter


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 08:31:03 PM
it'll help other users for where the templates go on MAC

and just to set things strait...
it did work on win7??


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 15, 2010, 08:32:26 PM
Wow... one day and we already have progress!! I think? >_>


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 08:34:45 PM
Yes it did work on win7 and yes we do haz progress.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 15, 2010, 08:42:05 PM
well...
I'm about to lose net soon...
but I'll continue to work on the template...

I'll try to have the Objects finished for tomorrow...


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 15, 2010, 08:43:55 PM
Awesome, this template will help a LOT seriously :srs:
If WHEN the converter is done, you'll definitely get credit!

V what he said, ttyl V
(http://forums.kc-mm.com/Themes/Efsane_Compact/images/warnwarn.gif) Not saying "Hi".


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 15, 2010, 08:44:14 PM
Awww man. Oh well. Hope to see you Tomorrow Tech!!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 04:59:27 AM
KKz... it's tomorrow :P
I'm sick so I don't have to go to skool :af2: *cough cough*

anyways...
I think I'm going to look into the .blend format...
(to build a import/export plugin for my WIP converter)
mdl0 <--> blend

I'll be building a template as well ;)

EDIT:
also, I finally understand the for loop
so it's for lists... and I already have a few ideas :D


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 11:01:18 AM
well...
here's some poly hex:
98 00 18  (24 points in tristrip)
4B 22 00 4B
52 29 00 52
21 21 00 21
35 25 00 35
34 34 00 34
2E 2E 00 2E
33 33 00 33
30 30 00 30
41 3E 00 41
31 31 00 31
40 2E 00 40
32 32 00 32
3F 3D 00 3F
3E 3C 00 3E
37 36 00 37
3D 3B 00 3D
3C 3A 00 3C
24 24 00 24
25 25 00 25
0D 0D 00 0D
16 16 00 16
0C 0C 00 0C
17 17 00 17
14 14 00 14
but I'm not exactly sure how it works :/

any ideas??

I know the method used is correct because it's the same method Melee uses in it's dat files


Title: Re: About DAE to MDL0 Conversion
Post by: TheShyGuy on December 16, 2010, 12:37:20 PM

also, I finally understand the for loop
so it's for lists... and I already have a few ideas :D

i know this isnt my thread and that this isnt c# but foreach loops are for arrays and lists,for loops can be used for arrays and lists, but the var that it is testing against can be any number/count


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 02:39:26 PM
hmm... interesting...
here's another data:
98 00 08
06 24 04 74 04 4B 00 00 C3
06 24 04 75 04 4C 00 00 C2
00 1E 04 73 04 4A 00 00 C1
06 24 04 77 04 4E 00 00 C5
03 21 04 78 04 4F 00 00 C6
03 21 04 8E 04 62 00 00 DF
0C 2A 04 F2 04 C3 00 01 44
12 30 05 87 05 50 00 01 E3
yea... now I'm really stummped

back to Will's converter lol


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 16, 2010, 04:29:09 PM
Well idk about you but I'm gonna go screw around with some hex in an mdl0 in HxD and see what happens... you know. Trial and error


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 04:34:46 PM
yea... actually...
I think I'm gonna play around with the materials...
see what I can screw up there... lol :P


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 16, 2010, 05:00:07 PM
Do you happen to know how each bone is rigged?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 05:14:39 PM
yea...  ;D

whatchya need?? :/


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 16, 2010, 05:22:27 PM
Wanna try to mess around with rigging/unrigging and adding bones/rigging them.
Is rigging simple or really complex? Can you explain


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 05:40:41 PM
ehh...
I would...
but it's complex...

I won't go into detail,
but it involves adding to the relocation table + changing all the following offsets (in every group) +
changing the mdl0 offsets in the data following the relocation offsets (maybe even more) :/

so yea...
adding bones is not very friendly...

on a side note,
here's something I've found with Tri_Strips:

if vtx_des2 == 2:

98 00 0C
40 3D 00 40
3F 3C 00 3F
38 35 00 38
3E 3B 00 3E
3D 3A 00 3D
25 24 00 25
26 25 00 26
0D 0D 00 0D
16 16 00 16
0C 0C 00 0C
17 17 00 17
14 14 00 14

if vtx_des2 == 3:

98 00 08
06 24 04 74 04 4B 00 00 C3
06 24 04 75 04 4C 00 00 C2
00 1E 04 73 04 4A 00 00 C1
06 24 04 77 04 4E 00 00 C5
03 21 04 78 04 4F 00 00 C6
03 21 04 8E 04 62 00 00 DF
0C 2A 04 F2 04 C3 00 01 44
12 30 05 87 05 50 00 01 E3

both take you to vertex and weight indexes, but I'm not sure exactly how they work just yet...
I'm just guessing at those patterns :/
they may not be correct


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 16, 2010, 05:44:06 PM
:O

Kewl.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 05:51:42 PM
heh...

yea...
I'm trying to find out if there's a 0, 1, or 4 :/
I could post the template, but if I do, you can expect errors galore XD
including I disabled the definitions (they take too long to load in edit mode)


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 16, 2010, 06:15:02 PM
Is the plan still to make a converter, or an exporter?

Also, I apparently stumbled upon a .pmd importer for 3DS, but unfortunately when I went to download it, the link was broken. However, apparently MarioKart had worked on that site before so... perhaps he has a copy?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 06:19:37 PM
Is the plan still to make a converter, or an exporter?
lol I'm building this template for a reason :P

Quote
Also, I apparently stumbled upon a .pmd importer for 3DS, but unfortunately when I went to download it, the link was broken. However, apparently MarioKart had worked on that site before so... perhaps he has a copy?

ah nice :D
if it works, let me know

I have a Yoko model sent to me that's waiting to be extracted :)


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 16, 2010, 06:31:39 PM
You mean the Resident Evil PMD importer? Yeah I saw that >.>
http://z6.invisionfree.com/Resident_Evil_4_PC/index.php?showtopic=1494

Too bad he didn't put mirrors -_-


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 16, 2010, 06:44:13 PM
RRRRRRRRRAAAAAAAAAAAAAAAAAAAAGGGGGGGGGGGGGEEEEEEE EEEEEEEE!!!

Also, Tech, you do Realize that if you make a video tutorial for hexing Pika's final smash, you're going to get featured on KC-MM blog. Check the "Featured" thread.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 07:08:07 PM
yea... I know...
I have to PM him

I'm sick right now though,
and I don't think anyone wants to hear a cold :P

colds suck... don't catch one
especially if you're like me where everything lasts twice as long... DX


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 16, 2010, 07:13:10 PM
Sound worth it if living counts as twice as long.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 16, 2010, 07:14:46 PM
Sound worth it if living counts as twice as long.

Loophole ftw


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 16, 2010, 07:29:50 PM
Sound worth it if living counts as twice as long.

lol
*trollface* Problem logic


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 17, 2010, 11:55:22 AM
hmm...
this has baffled me even more...
my template freezez with Pika...
but I tried it with Pachi and it worked...

but look what I found on a type 3:

98 00 1F
0F 2D 01 E6 01 DD 01 4F
0F 2D 01 F8 01 EE 01 61
0C 2A 01 F7 01 ED 01 60
03 21 01 F6 01 EC 01 5F
03 21 01 E0 01 D7 01 49
03 21 02 0F 02 05 01 78
03 21 01 E1 01 D8 01 4A
03 21 02 08 01 FE 01 71
03 21 01 E2 01 D9 01 4B
03 21 02 07 01 FD 01 70
03 21 02 0E 02 04 01 77
03 21 01 D0 01 C9 01 39
03 21 01 B9 01 B4 01 22
03 21 01 BD 01 B7 01 26
03 21 01 BA 01 B5 01 23
03 21 01 BB 01 B6 01 24
03 21 01 BC 00 B2 01 25
03 21 01 C2 01 BC 01 2B
03 21 01 C3 01 BD 01 2C
03 21 01 C6 01 C0 01 2F
03 21 02 6F 02 62 01 2B
03 21 02 70 02 63 01 2D
03 21 02 6B 02 5E 01 24
03 21 02 6D 02 60 01 27
03 21 02 6C 02 5F 01 26
03 21 02 6E 02 61 01 28
03 21 02 77 02 69 01 39
03 21 02 79 02 6B 01 3C
03 21 02 A4 02 95 01 70
03 21 02 A5 02 96 01 71
03 21 02 7F 02 71 01 4B

the length is 8... (not 9)
why must poly's be so tough DX


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 17, 2010, 02:22:34 PM
hey...
can anyone read/id this:
Code:
bool MDL0File::loadPolyGroup(const char* data, PolyGroup* group) {
uint16_t vertexid = BigUInt16(data, 72);
uint16_t normalid = BigUInt16(data, 74);
uint16_t colorid = BigUInt16(data, 76);
uint16_t texcoordid[8];
for (int i = 0; i < 8; i++)
texcoordid[i] = BigUInt16(data, 80 + 2 * i);

uint16_t unknowncount = BigUInt16(data, 102);

// find the start of the array format
int loc = 104 + unknowncount * 2;
while (data[loc] == 0) {
loc++;
}

// read array format
std::vector<int> fmt;
bool normalfmt = false;
bool colorfmt = false;
int unknownfmt = 0;
int uvfmt = 0;
int tempfmt = 0;

if (data[loc] != 0x08 && data[loc + 1] != 0x50)
return false;

tempfmt = data[loc + 5] & 3;
if (tempfmt) {
unknownfmt = 1;
}
tempfmt = (data[loc + 5] & 12) >> 2;
if (tempfmt) {
unknownfmt++;
}
tempfmt = (data[loc + 5] & 48) >> 4;
if (tempfmt) {
unknownfmt++;
}
tempfmt = (data[loc + 5] & 192) >> 6;
if (tempfmt) {
unknownfmt++;
}

tempfmt = (data[loc + 4] & 6) >> 1;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 4] & 24) >> 3;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 4] & 96) >> 5;
if (tempfmt)
fmt.push_back(tempfmt - 1);

if (data[loc + 6] != 0x08 && data[loc + 7] != 0x60)
return false;

tempfmt = data[loc + 11] & 3;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 11] & 12) >> 2;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 11] & 48) >> 4;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 11] & 192) >> 6;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = data[loc + 10] & 3;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 10] & 12) >> 2;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 10] & 48) >> 4;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 10] & 192) >> 6;
if (tempfmt)
fmt.push_back(tempfmt - 1);

if (data[loc + 16] != 0x08 && data[loc + 17] != 0x00)
return false;

colorfmt = data[loc + 20] & 3;
normalfmt = (data[loc + 20] & 12) >> 2;
uvfmt = (data[loc + 20] & 240) >> 4;

// find the start of the data
loc += 40;
while (data[loc] == 0) {
loc++;
}

// read data
bool reading = true;
do {
char type = data[loc];
loc++;
switch (type) {
case 0x30:
loc += 4;
break;
case 0x20:
loc += 4;
break;
case 0x28:
loc += 4;
break;
case 0x98: {
uint16_t count = BigUInt16(data, loc);
loc += 2;

if (options & LO_CONV_TO_TRIS) {
int length;
for (int i = 0; i < count - 2; i++) {
Vertex p1, p2, p3;
if (i % 2) {
p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc -= length;
} else {
p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc -= length;
}
Triangle tri(p1, p2, p3);
group->AddTriangle(tri);
}
loc += length * 2;
} else {
TriangleStrip strip;
for (int i = 0; i < count; i++) {
int length;
strip.Add(loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length));
loc += length;
}
strip.Lock();
group->AddTriangleStrip(strip);
}
}
break;
case 0x90: {
uint16_t count = BigUInt16(data, loc);
loc += 2;

for (int i = 0; i < count; i += 3) {
int length;
Vertex p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Triangle tri(p1, p2, p3);
group->AddTriangle(tri);
}
}
break;
case 0xA0: {
uint16_t count = BigUInt16(data, loc);
loc += 2;

if (options & LO_CONV_TO_TRIS) {
int length;
Vertex origin = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;

for (int i = 1; i < count - 1; i++) {

Vertex p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
Triangle tri(origin, p1, p2);
group->AddTriangle(tri);
}
loc += length;
} else {
int length;
Vertex origin = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
TriangleFan fan(origin);
for (int i = 1; i < count; i++) {

fan.Add(loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length));
loc += length;
}
fan.Lock();
group->AddTriangleFan(fan);
}
}
break;
case 0x80: {
uint16_t count = BigUInt16(data, loc);
loc += 2;

if (options & LO_CONV_TO_TRIS) {
for (int i = 0; i < count; i += 4) {
int length;
Vertex p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p4 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Triangle tri1(p1, p2, p3);
Triangle tri2(p1, p3, p4);
group->AddTriangle(tri1);
group->AddTriangle(tri2);
}
} else {
for (int i = 0; i < count; i += 4) {
int length;
Vertex p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p4 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Quad quad(p1, p2, p3, p4);
group->AddQuad(quad);
}
}
}
break;
case 0x00:
reading = false;
break;
default:
return false;
}
} while (reading);

group->SetVertex(vertexid, &vertexGroups[vertexid]);

if (normalid != 0xFFFF)
group->SetNormal(normalid, &normalGroups[normalid]);

if (colorid != 0xFFFF)
group->SetColor(colorid, &colorGroups[colorid]);

for (int i = 0; i < 8; i++) {
if (texcoordid[i] != 0xFFFF) {
group->AddUV(texcoordid[i], &uvGroups[texcoordid[i]]);
}
}

group->Lock();

return true;
}
I know it's a C-type code :/

anyways...
this'll help me figure out the polygon structure
(code taken from will's converter)

can anyone comment on that??
thanx


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 17, 2010, 05:09:50 PM
Let me look at the code for a bit, I'll see what I can get from it


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 17, 2010, 05:36:32 PM
kk

if you need anything else from will's src, let me know :/


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 17, 2010, 05:47:00 PM
Got the whole source
I'm prepared :D

Except neither AiS nor Will's converter will build... too many errors
idk why the released source would have errors but I'll have to fix them


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 17, 2010, 06:14:00 PM
lol
I did manage to take the whole src and put it in 1 document :P
here:
Code:

#include <iostream>

#include <dae.h>
#include <dom/domCOLLADA.h>
#include <ctime>
#include <sstream>

#include <iostream>
#include <string>
#include <fstream>

#include <cmath>


typedef unsigned char uchar;
typedef unsigned int uint;

class Vec3 {
public:
Vec3() {
this->x = 0;
this->y = 0;
this->z = 0;
}
Vec3(float x, float y, float z) {
this->x = x;
this->y = y;
this->z = z;
}
float X() {
return x;
}
float Y() {
return y;
}
float Z() {
return z;
}
protected:
float x;
float y;
float z;
};

class Vec2 {
public:
Vec2() {
this->u = 0;
this->v = 0;
}
Vec2(float u, float v) {
this->u = u;
this->v = v;
}
float U() {
return u;
}
float V() {
return v;
}
protected:
float u;
float v;
};

class RGBA {
public:
RGBA(uchar r, uchar g, uchar b, uchar a) {
this->r = r;
this->g = g;
this->b = b;
this->a = a;
}
uchar R() {
return r;
}
uchar G() {
return g;
}
uchar B() {
return b;
}
uchar A() {
return a;
}
protected:
uchar r;
uchar g;
uchar b;
uchar a;
};

class Vec3Group: public std::vector<Vec3> {
public:
Vec3Group() {
set = false;
}
void SetBound(Vec3 min, Vec3 max) {
if (!set) {
this->min = min;
this->max = max;
set = true;
}
}
Vec3 BoundingMin() {
return min;
}
Vec3 BoundingMax() {
return max;
}
protected:
bool set;
Vec3 min;
Vec3 max;
};

class Vec2Group: public std::vector<Vec2> {
public:
Vec2Group() {
set = false;
}
void SetBound(Vec2 min, Vec2 max) {
if (!set) {
this->min = min;
this->max = max;
set = true;
}
}
Vec2 BoundingMin() {
return min;
}
Vec2 BoundingMax() {
return max;
}
protected:
bool set;
Vec2 min;
Vec2 max;
};

typedef std::vector<RGBA> RGBAGroup;

class Vertex {
public:
Vertex() {
vertex = 0;
normal = 0;
color = 0;
//uv = NULL;
uvCount = 0;
}
~Vertex() {
/*if (uv != NULL) {
delete[] uv;
uv = NULL;
}*/
}

void Set(uint16_t vertex, uint16_t normal, uint16_t color, uint16_t uv[],
int numUV) {
this->vertex = vertex;
this->normal = normal;
this->color = color;

//this->uv = new uint16_t[numUV];
for (int i = 0; i < numUV; i++) {
this->uv[i] = uv[i];
}
this->uvCount = numUV;
}

uint16_t GetVertex() {
return vertex;
}
uint16_t GetNormal() {
return normal;
}
uint16_t GetColor() {
return color;
}
uint16_t GetUV(int id) {
if (id >= 0 && id < uvCount) {
return uv[id];
}
else
return 0;
}
int UVCount() {
return uvCount;
}
private:
uint16_t vertex;
uint16_t normal;
uint16_t color;
uint16_t uv[8];
int uvCount;
};

class TriangleStrip {
public:
TriangleStrip() {
locked = false;
}

~TriangleStrip() {

}

Vertex& operator[](size_t index) {
return verts[index];
}

void Add(Vertex vert) {
if (!locked) {
verts.push_back(vert);
}
}

void Lock() {
locked = true;
}

size_t Count() {
return verts.size();
}
private:
bool locked;
std::vector<Vertex> verts;
};

class TriangleFan {
public:
TriangleFan(Vertex origin) {
this->origin = origin;
locked = false;
}

~TriangleFan() {

}

Vertex& operator[](size_t index) {
return verts[index];
}

void Add(Vertex vert) {
if (!locked) {
verts.push_back(vert);
}
}

void Lock() {
locked = true;
}

size_t Count() {
return verts.size();
}

Vertex GetOriginVertex() {
return origin;
}
private:
bool locked;
Vertex origin;
std::vector<Vertex> verts;
};

class Triangle {
public:
Triangle(Vertex p1, Vertex p2, Vertex p3) {
this->p1 = p1;
this->p2 = p2;
this->p3 = p3;
}

~Triangle() {

}

Vertex& operator[](size_t index) {
switch (index) {
case 0:
return p1;
case 1:
return p2;
case 2:
return p3;
default:
return p3;
}
}
private:
Vertex p1;
Vertex p2;
Vertex p3;
};

class Quad {
public:
Quad(Vertex p1, Vertex p2, Vertex p3, Vertex p4) {
this->p1 = p1;
this->p2 = p2;
this->p3 = p3;
this->p4 = p4;
}

~Quad() {

}

Vertex& operator[](size_t index) {
switch (index) {
case 0:
return p1;
case 1:
return p2;
case 2:
return p3;
case 3:
return p4;
default:
return p4;
}
}
private:
Vertex p1;
Vertex p2;
Vertex p3;
Vertex p4;
};

class PolyGroup {
public:
PolyGroup() {
locked = false;

vertex = 0;
vertexPtr = NULL;
normal = 0;
normalPtr = NULL;
color = 0;
colorPtr = NULL;
}

~PolyGroup() {

}

void SetVertex(uint16_t vertex, Vec3Group* vertexPtr) {
if (!locked) {
this->vertex = vertex;
this->vertexPtr = vertexPtr;
}
}

void SetNormal(uint16_t normal, Vec3Group* normalPtr) {
if (!locked) {
this->normal = normal;
this->normalPtr = normalPtr;
}
}

void SetColor(uint16_t color, RGBAGroup* colorPtr) {
if (!locked) {
this->color = color;
this->colorPtr = colorPtr;
}
}

void AddUV(uint16_t uvid, Vec2Group* uvPtr) {
if (!locked) {
this->uvIDs.push_back(uvid);
this->uvPtrs.push_back(uvPtr);
}
}

void Lock() {
locked = true;
}

void AddTriangleStrip(TriangleStrip tristrip) {
if (!locked) {
triangleStrips.push_back(tristrip);
}
}

void AddTriangleFan(TriangleFan trifan) {
if (!locked) {
triangleFans.push_back(trifan);
}
}

void AddTriangle(Triangle triangle) {
if (!locked) {
triangles.push_back(triangle);
}
}

void AddQuad(Quad quad) {
if (!locked) {
quads.push_back(quad);
}
}

size_t TriangleStripCount() {
return triangleStrips.size();
}

size_t TriangleFanCount() {
return triangleFans.size();
}

size_t TriangleCount() {
return triangles.size();
}

size_t QuadCount() {
return quads.size();
}

TriangleStrip GetTriangleStrip(size_t index) {
return triangleStrips[index];
}

TriangleFan GetTriangleFan(size_t index) {
return triangleFans[index];
}

Triangle GetTriangle(size_t index) {
return triangles[index];
}

Quad GetQuad(size_t index) {
return quads[index];
}

uint16_t VertexGroup() {
return vertex;
}
Vec3Group* VertexGroupPtr() {
return vertexPtr;
}
uint16_t NormalGroup() {
return normal;
}
Vec3Group* NormalGroupPtr() {
return normalPtr;
}
uint16_t ColorGroup() {
return color;
}
RGBAGroup* ColorGroupPtr() {
return colorPtr;
}
uint16_t UVGroup(uint id) {
if (id < uvIDs.size())
return uvIDs[id];
}

Vec2Group* UVGroupPtr(uint id) {
if (id < uvPtrs.size())
return uvPtrs[id];
else
return NULL;
}

int UVGroupCount() {
return uvIDs.size();
}
private:
bool locked;
uint16_t vertex;
Vec3Group* vertexPtr;
uint16_t normal;
Vec3Group* normalPtr;
uint16_t color;
RGBAGroup* colorPtr;
std::vector<uint16_t> uvIDs;
std::vector<Vec2Group*> uvPtrs;

std::vector<TriangleStrip> triangleStrips;
std::vector<TriangleFan> triangleFans;
std::vector<Triangle> triangles;
std::vector<Quad> quads;
};








extern float BigFloat(const char* data, unsigned int offset=0);
extern uint32_t BigUInt32(const char* data, unsigned int offset=0);
extern uint16_t BigUInt16(const char* data, unsigned int offset=0);
extern int16_t BigSInt16(const char* data, unsigned int offset=0);







float BigFloat(const char* data, unsigned int offset) {
union {
float f;
unsigned char b[4];
} dat;

dat.b[0] = data[offset + 3];
dat.b[1] = data[offset + 2];
dat.b[2] = data[offset + 1];
dat.b[3] = data[offset];
return dat.f;
}

uint32_t BigUInt32(const char* data, unsigned int offset) {
union {
uint32_t u;
unsigned char b[4];
} dat;

dat.b[0] = data[offset + 3];
dat.b[1] = data[offset + 2];
dat.b[2] = data[offset + 1];
dat.b[3] = data[offset];
return dat.u;
}

uint16_t BigUInt16(const char* data, unsigned int offset) {
union {
uint16_t u;
unsigned char b[2];
} dat;

dat.b[0] = data[offset + 1];
dat.b[1] = data[offset];
return dat.u;
}

int16_t BigSInt16(const char* data, unsigned int offset) {
union {
int16_t u;
unsigned char b[2];
} dat;

dat.b[0] = data[offset + 1];
dat.b[1] = data[offset];
return dat.u;
}







typedef enum {
LO_CONV_TO_TRIS = 1 // converts all triangle strips/fans and quads to triangles
} LoadOptions;

class MDL0File {
public:
MDL0File();
virtual ~MDL0File();

/**
* Load an MDL0 file.
*
* @param data An array containing the all the data in the file.
* @return True on a success, false on failure.
*/
bool Load(const char* data, uint length, uint options);
void Unload();

PolyGroup* GetPolygonGroup(int id);
int PolygonGroupCount();
Vec3Group* GetVertexGroup(int id);
int VertexGroupCount();
RGBAGroup* GetColorGroup(int id);
int ColorGroupCount();
Vec3Group* GetNormalGroup(int id);
int NormalGroupCount();
Vec2Group* GetUVGroup(int id);
int UVGroupCount();

private:
bool loadGroup(const char* data, int type);
bool loadVec3Group(const char* data, Vec3Group* group);
bool loadVec2Group(const char* data, Vec2Group* group);
bool loadRGBAGroup(const char* data, RGBAGroup* group);
bool loadPolyGroup(const char* data, PolyGroup* group);
Vertex loadVertex(const char* data, int offset, std::vector<int> fmt,
bool hasNormal, bool hasColor, int unknown, int uv, int& outLength);

bool loaded;
uint options;

PolyGroup* polyGroups;
int polyGroupCount;
Vec3Group* vertexGroups;
int vertexGroupCount;
RGBAGroup* colorGroups;
int colorGroupCount;
Vec3Group* normalGroups;
int normalGroupCount;
Vec2Group* uvGroups;
int uvGroupCount;
};







MDL0File::MDL0File() {
loaded = false;

polyGroups = NULL;
polyGroupCount = 0;
vertexGroups = NULL;
vertexGroupCount = 0;
colorGroups = NULL;
colorGroupCount = 0;
normalGroups = NULL;
normalGroupCount = 0;
uvGroups = NULL;
uvGroupCount = 0;
options = 0;
}

MDL0File::~MDL0File() {
if (vertexGroups != NULL) {
delete[] vertexGroups;
vertexGroups = NULL;
}
if (normalGroups != NULL) {
delete[] normalGroups;
normalGroups = NULL;
}
if (colorGroups != NULL) {
delete[] colorGroups;
colorGroups = NULL;
}
if (uvGroups != NULL) {
delete[] uvGroups;
uvGroups = NULL;
}
if (polyGroups != NULL) {
delete[] polyGroups;
polyGroups = NULL;
}
}

bool MDL0File::Load(const char* data, uint length, uint convToTris) {
if (data == NULL) {
return false;
}

// we need the array to be at least as long as the header
if (length < 64)
return false;

// check for "MDL0"
if (data[0] != 'M' || data[1] != 'D' || data[2] != 'L' || data[3] != '0')
return false;

this->options = options;

const char *groupPtrs[11];
for (int i = 0; i < 11; i++) {
uint32_t ptr = BigUInt32(data, 16 + i * 4);

if (ptr >= length)
return false; // pointer is out of range

if (ptr == 0)
groupPtrs[i] = NULL;
else
groupPtrs[i] = data + ptr;
}

for (int i = 0; i < 11; i++) {
if (groupPtrs[i] != NULL) {
loadGroup(groupPtrs[i], i);
}
}

loaded = true;

return true;
}

void MDL0File::Unload() {}

PolyGroup* MDL0File::GetPolygonGroup(int id) {
if (id < polyGroupCount)
return &polyGroups[id];
else
return NULL;
}

int MDL0File::PolygonGroupCount() {
return polyGroupCount;
}

Vec3Group* MDL0File::GetVertexGroup(int id) {
if (id < vertexGroupCount)
return &vertexGroups[id];
else
return NULL;
}

int MDL0File::VertexGroupCount() {
return vertexGroupCount;
}

RGBAGroup* MDL0File::GetColorGroup(int id) {
if (id < colorGroupCount)
return &colorGroups[id];
else
return NULL;
}

int MDL0File::ColorGroupCount() {
return colorGroupCount;
}

Vec3Group* MDL0File::GetNormalGroup(int id) {
if (id < normalGroupCount)
return &normalGroups[id];
else
return NULL;
}

int MDL0File::NormalGroupCount() {
return normalGroupCount;
}

Vec2Group* MDL0File::GetUVGroup(int id) {
if (id < uvGroupCount)
return &uvGroups[id];
else
return NULL;
}

int MDL0File::UVGroupCount() {
return uvGroupCount;
}

bool MDL0File::loadGroup(const char* data, int type) {
uint32_t itemcount = BigUInt32(data, 4);

switch (type) {
case 0: // unknown
break;
case 1: // probably bones, don't know how to load yet
break;
case 2: // vertices
vertexGroups = new Vec3Group[itemcount];
vertexGroupCount = itemcount;
break;
case 3: // normals
normalGroups = new Vec3Group[itemcount];
normalGroupCount = itemcount;
break;
case 4: // colors
colorGroups = new RGBAGroup[itemcount];
colorGroupCount = itemcount;
break;
case 5: // uv coordinates
uvGroups = new Vec2Group[itemcount];
uvGroupCount = itemcount;
break;
case 6: // unknown
break;
case 7: // unknown
break;
case 8: // polygon groups
polyGroups = new PolyGroup[itemcount];
polyGroupCount = itemcount;
break;
case 9: // unknown
break;
case 10: // unknown
break;
}

for (uint i = 0; i < itemcount; i++) {
uint32_t dataoffset = BigUInt32(data, 36 + 16 * i);

switch (type) {
case 0: // unknown
break;
case 1: // probably bones, don't know how to load yet
break;
case 2: // vertices
if (!loadVec3Group(data + dataoffset, &vertexGroups[i]))
return false;
break;
case 3: // normals
if (!loadVec3Group(data + dataoffset, &normalGroups[i]))
return false;
break;
case 4: // colors
if (!loadRGBAGroup(data + dataoffset, &colorGroups[i]))
return false;
break;
case 5: // uv coordinates
if (!loadVec2Group(data + dataoffset, &uvGroups[i]))
return false;
break;
case 6: // unknown
break;
case 7: // unknown
break;
case 8: // polygon groups
if (!loadPolyGroup(data + dataoffset, &polyGroups[i]))
return false;
break;
case 9: // unknown
break;
case 10: // unknown
break;
}
}

return true;
}

bool MDL0File::loadVec3Group(const char* data, Vec3Group* group) {
bool boundingbox = data[23];
char datatype = data[27];
char fixedpointbits = data[28];
uint16_t datacount = BigUInt16(data, 30);

int datastart = 32;
if (boundingbox) {
float minx = BigFloat(data, 32);
float miny = BigFloat(data, 36);
float minz = BigFloat(data, 40);
float maxx = BigFloat(data, 44);
float maxy = BigFloat(data, 48);
float maxz = BigFloat(data, 52);

group->SetBound(Vec3(minx, miny, minz), Vec3(maxx, maxy, maxz));

datastart = 64;
} else {
group->SetBound(Vec3(0, 0, 0), Vec3(0, 0, 0));
}

switch (datatype) {
case 0: // fixed point u8
for (int i = 0; i < datacount; i++) {
float x = (unsigned char) data[datastart + i * 6] / pow(2.0f,
fixedpointbits);
float y = (unsigned char) data[datastart + 1 + i * 6] / pow(2.0f,
fixedpointbits);
float z = (unsigned char) data[datastart + 2 + i * 6] / pow(2.0f,
fixedpointbits);
group->push_back(Vec3(x, y, z));
}
break;
case 1: // fixed point s8
for (int i = 0; i < datacount; i++) {
float x = data[datastart + i * 6] / pow(2.0f, fixedpointbits);
float y = data[datastart + 1 + i * 6] / pow(2.0f, fixedpointbits);
float z = data[datastart + 2 + i * 6] / pow(2.0f, fixedpointbits);
group->push_back(Vec3(x, y, z));
}
break;
case 2: // fixed point u16
for (int i = 0; i < datacount; i++) {
float x = BigUInt16(data, datastart + i * 6) / pow(2.0f,
fixedpointbits);
float y = BigUInt16(data, datastart + 2 + i * 6) / pow(2.0f,
fixedpointbits);
float z = BigUInt16(data, datastart + 4 + i * 6) / pow(2.0f,
fixedpointbits);
group->push_back(Vec3(x, y, z));
}
break;
case 3: // fixed point s16
for (int i = 0; i < datacount; i++) {
float x = BigSInt16(data, datastart + i * 6) / pow(2.0f,
fixedpointbits);
float y = BigSInt16(data, datastart + 2 + i * 6) / pow(2.0f,
fixedpointbits);
float z = BigSInt16(data, datastart + 4 + i * 6) / pow(2.0f,
fixedpointbits);
group->push_back(Vec3(x, y, z));
}
break;
case 4: // floating point
for (int i = 0; i < datacount; i++) {
float x = BigFloat(data, datastart + i * 12);
float y = BigFloat(data, datastart + 4 + i * 12);
float z = BigFloat(data, datastart + 8 + i * 12);
group->push_back(Vec3(x, y, z));
}
break;
default:
return false;
}

return true;
}

bool MDL0File::loadVec2Group(const char* data, Vec2Group* group) {
bool boundingbox = data[23];
char datatype = data[27];
char fixedpointbits = data[28];
uint16_t datacount = BigUInt16(data, 30);

int datastart = 32;
if (boundingbox) {
float minu = BigFloat(data, 32);
float minv = BigFloat(data, 36);
float maxu = BigFloat(data, 40);
float maxv = BigFloat(data, 44);

group->SetBound(Vec2(minu, minv), Vec2(maxu, maxv));

datastart = 64;
} else {
group->SetBound(Vec2(0, 0), Vec2(0, 0));
}

switch (datatype) {
case 0: // fixed point u8
for (int i = 0; i < datacount; i++) {
float u = (unsigned char) data[datastart + i * 6] / pow(2.0f,
fixedpointbits);
float v = (unsigned char) data[datastart + 1 + i * 6] / pow(2.0f,
fixedpointbits);
group->push_back(Vec2(u, v));
}
break;
case 1: // fixed point s8
for (int i = 0; i < datacount; i++) {
float u = data[datastart + i * 6] / pow(2.0f, fixedpointbits);
float v = data[datastart + 1 + i * 6] / pow(2.0f, fixedpointbits);
group->push_back(Vec2(u, v));
}
break;
case 2: // fixed point u16
for (int i = 0; i < datacount; i++) {
float u = BigUInt16(data, datastart + i * 4) / pow(2.0f,
fixedpointbits);
float v = BigUInt16(data, datastart + 2 + i * 4) / pow(2.0f,
fixedpointbits);
group->push_back(Vec2(u, v));
}
case 3: // fixed point s16
for (int i = 0; i < datacount; i++) {
float u = BigSInt16(data, datastart + i * 4) / pow(2.0f,
fixedpointbits);
float v = BigSInt16(data, datastart + 2 + i * 4) / pow(2.0f,
fixedpointbits);
group->push_back(Vec2(u, v));
}
break;
case 4: // floating point
for (int i = 0; i < datacount; i++) {
float u = BigFloat(data, datastart + i * 8);
float v = BigFloat(data, datastart + 4 + i * 8);
group->push_back(Vec2(u, v));
}
break;
default:
return false;
}

return true;
}

bool MDL0File::loadRGBAGroup(const char* data, RGBAGroup* group) {
char datatype = data[27];
uint16_t datacount = BigUInt16(data, 30);

int datastart = 32;

switch (datatype) {
case 0: // RGB565
for (int i = 0; i < datacount; i++) {
char r = ((data[datastart + 2 * i] & 0xF8) >> 3) / 0x1F * 0xFF;
char g = (((data[datastart + 2 * i] & 0x7) << 3) | ((data[datastart
+ 1 + 2 * i] & 0xE0) >> 5)) / 0x3F * 0xFF;
char b = (data[datastart + 1 + 2 * i] & 0x1F) / 0x1F * 0xFF;
group->push_back(RGBA(r, g, b, 0xFF));
}
break;
case 1: // RGB8
for (int i = 0; i < datacount; i++) {
char r = data[datastart + 3 * i];
char g = data[datastart + 1 + 3 * i];
char b = data[datastart + 2 + 3 * i];
group->push_back(RGBA(r, g, b, 0xFF));
}
break;
case 2: // RGBX8
for (int i = 0; i < datacount; i++) {
char r = data[datastart + 4 * i];
char g = data[datastart + 1 + 4 * i];
char b = data[datastart + 2 + 4 * i];
group->push_back(RGBA(r, g, b, 0xFF));
}
break;
case 3: // RGBA4
for (int i = 0; i < datacount; i++) {
char r = (data[datastart + 2 * i] >> 4) * 0x11;
char g = data[datastart + 2 * i] * 0x11;
char b = (data[datastart + 1 + 2 * i] >> 4) * 0x11;
char a = data[datastart + 1 + 2 * i] * 0x11;
group->push_back(RGBA(r, g, b, a));
}
break;
case 4: // RGBA6
for (int i = 0; i < datacount; i++) {
char r = ((data[datastart + 3 * i] & 0x3F) >> 2) / 0x3F * 0xFF;
char g = (((data[datastart + 3 * i] & 0x3) << 4) | ((data[datastart
+ 1 + 3 * i] & 0xF0) >> 4)) / 0x3F * 0xFF;
char b = (((data[datastart + 1 + 3 * i] & 0xF) << 4)
| ((data[datastart + 2 + 3 * i] & 0xC0) >> 6)) / 0x3F
* 0xFF;
char a = (data[datastart + 2 + 3 * i] & 0x3F) / 0x3F * 0xFF;
group->push_back(RGBA(r, g, b, a));
}
break;
case 5: // RGBA8
for (int i = 0; i < datacount; i++) {
unsigned char r = data[datastart + 4 * i];
unsigned char g = data[datastart + 1 + 4 * i];
unsigned char b = data[datastart + 2 + 4 * i];
unsigned char a = data[datastart + 3 + 4 * i];
group->push_back(RGBA(r, g, b, a));
}
break;
default:
return false;
}

return true;
}

bool MDL0File::loadPolyGroup(const char* data, PolyGroup* group) {
uint16_t vertexid = BigUInt16(data, 72);
uint16_t normalid = BigUInt16(data, 74);
uint16_t colorid = BigUInt16(data, 76);
uint16_t texcoordid[8];
for (int i = 0; i < 8; i++)
texcoordid[i] = BigUInt16(data, 80 + 2 * i);

uint16_t unknowncount = BigUInt16(data, 102);

// find the start of the array format
int loc = 104 + unknowncount * 2;
while (data[loc] == 0) {
loc++;
}

// read array format
std::vector<int> fmt;
bool normalfmt = false;
bool colorfmt = false;
int unknownfmt = 0;
int uvfmt = 0;
int tempfmt = 0;

if (data[loc] != 0x08 && data[loc + 1] != 0x50)
return false;

tempfmt = data[loc + 5] & 3;
if (tempfmt) {
unknownfmt = 1;
}
tempfmt = (data[loc + 5] & 12) >> 2;
if (tempfmt) {
unknownfmt++;
}
tempfmt = (data[loc + 5] & 48) >> 4;
if (tempfmt) {
unknownfmt++;
}
tempfmt = (data[loc + 5] & 192) >> 6;
if (tempfmt) {
unknownfmt++;
}

tempfmt = (data[loc + 4] & 6) >> 1;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 4] & 24) >> 3;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 4] & 96) >> 5;
if (tempfmt)
fmt.push_back(tempfmt - 1);

if (data[loc + 6] != 0x08 && data[loc + 7] != 0x60)
return false;

tempfmt = data[loc + 11] & 3;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 11] & 12) >> 2;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 11] & 48) >> 4;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 11] & 192) >> 6;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = data[loc + 10] & 3;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 10] & 12) >> 2;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 10] & 48) >> 4;
if (tempfmt)
fmt.push_back(tempfmt - 1);
tempfmt = (data[loc + 10] & 192) >> 6;
if (tempfmt)
fmt.push_back(tempfmt - 1);

if (data[loc + 16] != 0x08 && data[loc + 17] != 0x00)
return false;

colorfmt = data[loc + 20] & 3;
normalfmt = (data[loc + 20] & 12) >> 2;
uvfmt = (data[loc + 20] & 240) >> 4;

// find the start of the data
loc += 40;
while (data[loc] == 0) {
loc++;
}

// read data
bool reading = true;
do {
char type = data[loc];
loc++;
switch (type) {
case 0x30:
loc += 4;
break;
case 0x20:
loc += 4;
break;
case 0x28:
loc += 4;
break;
case 0x98: {
uint16_t count = BigUInt16(data, loc);
loc += 2;

if (options & LO_CONV_TO_TRIS) {
int length;
for (int i = 0; i < count - 2; i++) {
Vertex p1, p2, p3;
if (i % 2) {
p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc -= length;
} else {
p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc -= length;
}
Triangle tri(p1, p2, p3);
group->AddTriangle(tri);
}
loc += length * 2;
} else {
TriangleStrip strip;
for (int i = 0; i < count; i++) {
int length;
strip.Add(loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length));
loc += length;
}
strip.Lock();
group->AddTriangleStrip(strip);
}
}
break;
case 0x90: {
uint16_t count = BigUInt16(data, loc);
loc += 2;

for (int i = 0; i < count; i += 3) {
int length;
Vertex p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Triangle tri(p1, p2, p3);
group->AddTriangle(tri);
}
}
break;
case 0xA0: {
uint16_t count = BigUInt16(data, loc);
loc += 2;

if (options & LO_CONV_TO_TRIS) {
int length;
Vertex origin = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;

for (int i = 1; i < count - 1; i++) {

Vertex p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
Triangle tri(origin, p1, p2);
group->AddTriangle(tri);
}
loc += length;
} else {
int length;
Vertex origin = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
TriangleFan fan(origin);
for (int i = 1; i < count; i++) {

fan.Add(loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length));
loc += length;
}
fan.Lock();
group->AddTriangleFan(fan);
}
}
break;
case 0x80: {
uint16_t count = BigUInt16(data, loc);
loc += 2;

if (options & LO_CONV_TO_TRIS) {
for (int i = 0; i < count; i += 4) {
int length;
Vertex p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p4 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Triangle tri1(p1, p2, p3);
Triangle tri2(p1, p3, p4);
group->AddTriangle(tri1);
group->AddTriangle(tri2);
}
} else {
for (int i = 0; i < count; i += 4) {
int length;
Vertex p1 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p2 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p3 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Vertex p4 = loadVertex(data, loc, fmt, normalfmt, colorfmt,
unknownfmt, uvfmt, length);
loc += length;
Quad quad(p1, p2, p3, p4);
group->AddQuad(quad);
}
}
}
break;
case 0x00:
reading = false;
break;
default:
return false;
}
} while (reading);

group->SetVertex(vertexid, &vertexGroups[vertexid]);

if (normalid != 0xFFFF)
group->SetNormal(normalid, &normalGroups[normalid]);

if (colorid != 0xFFFF)
group->SetColor(colorid, &colorGroups[colorid]);

for (int i = 0; i < 8; i++) {
if (texcoordid[i] != 0xFFFF) {
group->AddUV(texcoordid[i], &uvGroups[texcoordid[i]]);
}
}

group->Lock();

return true;
}

Vertex MDL0File::loadVertex(const char* data, int offset, std::vector<int> fmt,
bool hasNormal, bool hasColor, int unknown, int uv, int& outLength) {
uint16_t vert = 0;
uint16_t norm = 0;
uint16_t color = 0;
uint16_t uvs[8];

int length = 0;

// assuming all unknowns are one byte long for now.
length += unknown;

if (fmt[0] == 1) {
vert = (unsigned char) data[offset + length];
length += 1;
} else {
vert = BigUInt16(data, offset + length);
length += 2;
}

if (hasNormal) {
if (fmt[1] == 1) {
norm = (unsigned char) data[offset + length];
length += 1;
} else {
norm = BigUInt16(data, offset + length);
length += 2;
}
}

if (hasColor) {
if (fmt[1 + hasNormal] == 1) {
color = (unsigned char) data[offset + length];
length += 1;
} else {
color = BigUInt16(data, offset + length);
length += 2;
}
}

for (int i = 0; i < uv; i++) {
if (fmt[1 + hasNormal + hasColor + i] == 1) {
uvs[i] = (unsigned char) data[offset + length];
length += 1;
} else {
uvs[i] = BigUInt16(data, offset + length);
length += 2;
}
}

Vertex outvert;
outvert.Set(vert, norm, color, uvs, uv);

outLength = length;

return outvert;
}








using namespace std;

class COLLADAExport {
public:
COLLADAExport();
virtual ~COLLADAExport();

bool Export(MDL0File* mdl0, const char* destfilename);

private:
void addMetadata(domCOLLADA* root);
void addLibraryGeometry(domCOLLADA* root, MDL0File* mdl0);
void addPositionArray(daeElement* mesh, Vec3Group* group, string geomName);
void addTexcoordArray(daeElement* mesh, Vec2Group* group, string geomName);
void addTriangleStrips(daeElement* mesh, PolyGroup* group, string name);
void addTriangleFans(daeElement* mesh, PolyGroup* group, string name);
void addTriangles(daeElement* mesh, PolyGroup* group, string name);
void addQuads(daeElement* mesh, PolyGroup* group, string name);
void addInputs(daeElement* parent, PolyGroup* group, string name);
string intToString(int num);


};







COLLADAExport::COLLADAExport() {
// TODO Auto-generated constructor stub

}

COLLADAExport::~COLLADAExport() {
// TODO Auto-generated destructor stub
}

bool COLLADAExport::Export(MDL0File* mdl0, const char* destfilename) {
DAE dae;

domCOLLADA* root = dae.add(destfilename);

if (root == NULL)
return false;

addMetadata(root);

addLibraryGeometry(root, mdl0);

dae.writeAll();

return true;
}

void COLLADAExport::addMetadata(domCOLLADA* root) {
daeElement* asset = root->add("asset");

// add contributer
daeElement* contributor = asset->add("contributor");
//daeElement* author = asset->add("author");
daeElement* authoring_tool = contributor->add("authoring_tool");
authoring_tool->setCharData("MDL0 to COLLADA converter");
daeElement* comments = contributor->add("comments");
comments->setCharData(
"This file was created by the mdl0converter, written by William Hahne. The copyright of this file belongs to the creator of the original input file.");

// get the current time and then format it correctly for XML
ostringstream strm;
time_t t = time(NULL);
struct tm* lt = localtime(&t);
strm << lt->tm_year + 1900 << "-" << lt->tm_mon << "-" << lt->tm_mday
<< "T" << lt->tm_hour << ":" << lt->tm_min << ":" << lt->tm_sec
<< "Z";
string current_time = strm.str();

// set created and modified time
daeElement* created = asset->add("created");
created->setCharData(current_time);
daeElement* modified = asset->add("modified");
modified->setCharData(current_time);
}

void COLLADAExport::addLibraryGeometry(domCOLLADA* root, MDL0File* mdl0) {
daeElement* library_geometries = root->add("library_geometries");

for (int i = 0; i < mdl0->PolygonGroupCount(); i++) {
PolyGroup* group = mdl0->GetPolygonGroup(i);
daeElement* geometry = library_geometries->add("geometry");

ostringstream strm;
strm << "Polygon" << i;
string name = strm.str();

geometry->setAttribute("id", name.c_str());

daeElement* mesh = geometry->add("mesh");

addPositionArray(mesh, group->VertexGroupPtr(), name + "-position");
addPositionArray(mesh, group->NormalGroupPtr(), name + "-normal");
for (int i = 0; i < group->UVGroupCount(); i++)
addTexcoordArray(mesh, group->UVGroupPtr(i), name + "-texcoord"
+ intToString(i));

daeElement* vertices = mesh->add("vertices");
string vertName(name + "-vertex");
vertices->setAttribute("id", vertName.c_str());
daeElement* input = vertices->add("input");
input->setAttribute("semantic", "POSITION");
string sourceName("#" + name + "-position");
input->setAttribute("source", sourceName.c_str());

if (group->TriangleStripCount() > 0)
addTriangleStrips(mesh, group, name);

if (group->TriangleFanCount() > 0)
addTriangleFans(mesh, group, name);

if (group->TriangleCount() > 0)
addTriangles(mesh, group, name);
}

// temporary until I (hopefully) find a better solution
daeElement* visual_scene = root->add("library_visual_scenes visual_scene");
visual_scene->setAttribute("id", "testscene");
for (int i = 0; i < mdl0->PolygonGroupCount(); i++) {
daeElement* instance_geometry = visual_scene->add(
"node instance_geometry");
string name("#Polygon" + intToString(i));
instance_geometry->setAttribute("url", name.c_str());
}

daeElement* instance_visual_scene =
root->add("scene instance_visual_scene");
instance_visual_scene->setAttribute("url", "#testscene");
}

void COLLADAExport::addPositionArray(daeElement* mesh, Vec3Group* group,
string posName) {
daeElement* source = mesh->add("source");
source->setAttribute("id", posName.c_str());

daeElement* float_array = source->add("float_array");
string arrayPosName(posName + "-array");
float_array->setAttribute("id", arrayPosName.c_str());
float_array->setAttribute("count", intToString(group->size() * 3).c_str());

ostringstream strm;
for (uint i = 0; i < group->size(); i++) {
Vec3 vec = (*group)[i];
strm << -vec.X() << " " << vec.Y() << " " << vec.Z() << "\n";
}
float_array->setCharData(strm.str());

daeElement* accessor = source->add("technique_common accessor");

string arrayPosSourceName("#" + arrayPosName);
accessor->setAttribute("source", arrayPosSourceName.c_str());
accessor->setAttribute("count", intToString(group->size()).c_str());
accessor->setAttribute("stride", "3");
daeElement* paramX = accessor->add("param");
paramX->setAttribute("name", "X");
paramX->setAttribute("type", "float");
daeElement* paramY = accessor->add("param");
paramY->setAttribute("name", "Y");
paramY->setAttribute("type", "float");
daeElement* paramZ = accessor->add("param");
paramZ->setAttribute("name", "Z");
paramZ->setAttribute("type", "float");

}

void COLLADAExport::addTexcoordArray(daeElement* mesh, Vec2Group* group,
string posName) {
daeElement* source = mesh->add("source");
source->setAttribute("id", posName.c_str());

daeElement* float_array = source->add("float_array");
string arrayPosName(posName + "-array");
float_array->setAttribute("id", arrayPosName.c_str());
float_array->setAttribute("count", intToString(group->size() * 2).c_str());

ostringstream strm;
for (uint i = 0; i < group->size(); i++) {
Vec2 vec = (*group)[i];
strm << vec.U() << " " << vec.V() << " ";
}
float_array->setCharData(strm.str());

daeElement* accessor = source->add("technique_common accessor");

string arrayPosSourceName("#" + arrayPosName);
accessor->setAttribute("source", arrayPosSourceName.c_str());
accessor->setAttribute("count", intToString(group->size()).c_str());
accessor->setAttribute("stride", "2");
daeElement* paramU = accessor->add("param");
paramU->setAttribute("name", "U");
paramU->setAttribute("type", "float");
daeElement* paramV = accessor->add("param");
paramV->setAttribute("name", "V");
paramV->setAttribute("type", "float");

}

void COLLADAExport::addTriangleStrips(daeElement* mesh, PolyGroup* group,
string name) {
daeElement* tristrips = mesh->add("tristrips");
tristrips->setAttribute("count",
intToString(group->TriangleStripCount()).c_str());

addInputs(tristrips, group, name);

for (uint i = 0; i < group->TriangleStripCount(); i++) {
daeElement* p = tristrips->add("p");

TriangleStrip strip = group->GetTriangleStrip(i);

ostringstream strm;
for (uint j = 0; j < strip.Count(); j++) {
Vertex vert = strip[j];
if (vert.GetVertex() >= group->VertexGroupPtr()->size())
std::cout << "WARNING: Tristrip vertex out of range in "
<< name << endl;
if (vert.GetNormal() >= group->NormalGroupPtr()->size())
std::cout << "WARNING: Tristrip normal out of range in "
<< name << endl;
strm << vert.GetVertex() << " " << vert.GetNormal() << "  ";

for (int k = 0; k < vert.UVCount(); k++) {
strm << vert.GetUV(k) << " ";
}
}
p->setCharData(strm.str());
}
}
void COLLADAExport::addTriangleFans(daeElement* mesh, PolyGroup* group,
string name) {
daeElement* trifans = mesh->add("trifans");
trifans->setAttribute("count",
intToString(group->TriangleFanCount()).c_str());

addInputs(trifans, group, name);

for (uint i = 0; i < group->TriangleFanCount(); i++) {
daeElement* p = trifans->add("p");

TriangleFan fan = group->GetTriangleFan(i);

ostringstream strm;
Vertex origin = fan.GetOriginVertex();
strm << origin.GetVertex() << " " << origin.GetNormal() << "  ";
for (uint j = 0; j < fan.Count(); j++) {
Vertex vert = fan[j];
if (vert.GetVertex() >= group->VertexGroupPtr()->size())
std::cout << "WARNING: Triangle Fan vertex out of range in "
<< name << endl;
if (vert.GetNormal() >= group->NormalGroupPtr()->size())
std::cout << "WARNING: Triangle Fan normal out of range in "
<< name << endl;
strm << vert.GetVertex() << " " << vert.GetNormal() << " ";

for (int k = 0; k < vert.UVCount(); k++) {
strm << vert.GetUV(k) << " ";
}
}
p->setCharData(strm.str());
}
}
void COLLADAExport::addTriangles(daeElement* mesh, PolyGroup* group,
string name) {
daeElement* tris = mesh->add("triangles");
tris->setAttribute("count", intToString(group->TriangleCount()).c_str());

addInputs(tris, group, name);

daeElement* p = tris->add("p");
ostringstream strm;
for (uint i = 0; i < group->TriangleCount(); i++) {
Triangle tri = group->GetTriangle(i);

for (int j = 0; j < 3; j++) {
Vertex vert = tri[j];
if (vert.GetVertex() >= group->VertexGroupPtr()->size())
std::cout << "TRIANGLE WARNING: Vertex out of range in "
<< name << endl;
if (vert.GetNormal() >= group->NormalGroupPtr()->size())
std::cout << "TRIANGLE WARNING: Normal out of range in "
<< name << endl;
strm << vert.GetVertex() << " " << vert.GetNormal() << " ";

for (int k = 0; k < vert.UVCount(); k++) {
strm << vert.GetUV(k) << " ";
}
}
strm << "\n";
}
p->setCharData(strm.str());
}
void COLLADAExport::addQuads(daeElement* mesh, PolyGroup* group, string name) {

}

void COLLADAExport::addInputs(daeElement* parent, PolyGroup* group, string name) {
daeElement* inputVert = parent->add("input");
inputVert->setAttribute("semantic", "VERTEX");
string vertSourceName("#" + name + "-vertex");
inputVert->setAttribute("source", vertSourceName.c_str());
inputVert->setAttribute("offset", "0");
daeElement* inputNorm = parent->add("input");
inputNorm->setAttribute("semantic", "NORMAL");
string normSourceName("#" + name + "-normal");
inputNorm->setAttribute("source", normSourceName.c_str());
inputNorm->setAttribute("offset", "1");

for (int i = 0; i < group->UVGroupCount(); i++) {
daeElement* inputTex = parent->add("input");
inputTex->setAttribute("semantic", "TEXCOORD");
string texSourceName("#" + name + "-texcoord" + intToString(i));
inputTex->setAttribute("source", texSourceName.c_str());
inputTex->setAttribute("offset", intToString(2 + i).c_str());
inputTex->setAttribute("set", "0");
}
}

string COLLADAExport::intToString(int num) {
ostringstream strm;
strm << num;
return strm.str();
}










using namespace std;

void printUsage() {
cout << "Usage:" << endl;
cout << "mdl0converter [-t] input_file output_file" << endl << endl;
cout << "Options:" << endl;
cout << "   -t    Convert all triangle strips, triangle fans, and quads to triangles." << endl << endl;
cout << "Copyright (C) 2008 William Hahne" << endl;
}

void printCredits() {
// todo: add credits
}

int main(int argc, char *argv[]) {
char* inputfile = NULL;
char* outputfile = NULL;
uint opts = 0;
for (int i = 1; i < argc; i++) {
if (argv[i][0] == '-') {
switch (argv[i][1]) {
case 't':
opts |= LO_CONV_TO_TRIS;
break;
default:
cout << "Invalid option: " << argv[i] << endl;
printUsage();
return 0;
}
} else {
if (inputfile == NULL) {
inputfile = argv[i];
}
else if (inputfile != NULL && outputfile == NULL) {
outputfile = argv[i];
}
}
}

if (inputfile == NULL || outputfile == NULL) {
cout << "Not enough arguments." << endl;
printUsage();
return 0;
}

ifstream f;
f.open(inputfile, ios::binary | ios::in);
if (!f.good() || !f.is_open()) {
cout << "Error opening file." << endl << endl;
printUsage();
return 0;
}
f.seekg(0, ios::beg);
int begin = f.tellg();
f.seekg(0, ios::end);
int size = (int) f.tellg() - begin;

f.seekg(0, ios::beg);
char* data = new char[size];
f.read(data, size);

MDL0File file;
file.Load(data, size, opts);

// convert to collada
COLLADAExport daeExport;
outputfile = inputfile + ".DAE"
if (!daeExport.Export(&file, outputfile)) {
cout << "Error writing output file." << endl << endl;
printUsage();
return 0;
}

cout << "Success" << endl;

return 0;
}



Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 17, 2010, 06:48:54 PM
Hey check this out, it's supposedly a pmd to collada converter for python:
http://trac.wildfiregames.com/ticket/461

It comes with a tutorial but... idk how to follow it 0_o


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 17, 2010, 07:22:49 PM
ehh...
I DL'd and tried it...

I'm getting error after error after error...
the readme aint worth  crap D:
and there's way too many files in the directory...
(I hate multiple files) XD


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 17, 2010, 07:28:50 PM
mmmk lol it was worth a shot


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 17, 2010, 07:31:43 PM
mmmk lol it was worth a shot

I'll be sure to keep the pmd format in mind for my converter...
still need a plugin system :/

heh, at least the site has some easy notes to look off of :D


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 18, 2010, 07:29:22 AM
well...
I'm gonna carry out dev of my converter on my forum...

http://tcll5850.proboards.com

I've finally gotten the plugin system to work,
so now I can actually start progging :D

I need to get more members on my forum anyways... :P
see ya there ;)

EDIT:
hey BJ... :/
I kinda need you for something on my forum...
can you meet me there??


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 18, 2010, 10:32:54 AM
We need to think of a catchy converter name ;D

"Ok, now use Dae2Smash to convert the file..."


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 18, 2010, 11:56:26 AM
that soulds like it'd work I guess =.=

lol...
got too many things goin on at once :P


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 18, 2010, 05:57:42 PM
I made made a name for it months ago: The Tech2 Converter. I even made a logo for it. I just sorta think Tech Deserves credit for what he made. Like, the "Mariokart vertexing method" obviously gives credit to the guy who made it so... yeah. :3


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 18, 2010, 06:33:03 PM
Hey, I'm making a GUI and all the dlls *technically* from scratch, plus Tcll is coding in a completely different language...
He's also helping me understand the mdl0 format.
I'm putting him as a major contributor in the about window >:(

I think we both deserve some credit, since I'm telling him what I know and he's telling me what he knows


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 18, 2010, 07:27:50 PM
I made made a name for it months ago: The Tech2 Converter. I even made a logo for it. I just sorta think Tech Deserves credit for what he made. Like, the "Mariokart vertexing method" obviously gives credit to the guy who made it so... yeah. :3


yea roo...
he gave me a few heads up and what not about codeing

and umm...
I'm changing the name...
Universal Model Converter

you can make an image if you want :)
the release version will be v1.0b

as a matter of fact, you can copy the dev-code if you want:
http://www.daniweb.com/forums/post1420424.html#post1420424
it don't do nothin yet though, but it will once I have a valad method...


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 18, 2010, 10:58:46 PM
yea roo...
he gave me a few heads up and what not about codeing

and umm...
I'm changing the name...
Universal Model Converter

you can make an image if you want :)
the release version will be v1.0b

as a matter of fact, you can copy the dev-code if you want:
[url]http://www.daniweb.com/forums/post1420424.html#post1420424[/url]
it don't do nothin yet though, but it will once I have a valad method...


Awww, man you used to be cool. D:
Oh well. I guess it'll do. :\

Good to see some sort of beta actiona going on here.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 07:18:57 AM
yea roo...
he gave me a few heads up and what not about codeing

and umm...
I'm changing the name...
Universal Model Converter

you can make an image if you want :)
the release version will be v1.0b

as a matter of fact, you can copy the dev-code if you want:
[url]http://www.daniweb.com/forums/post1420424.html#post1420424[/url]
it don't do nothin yet though, but it will once I have a valad method...


Awww, man you used to be cool. D:
Oh well. I guess it'll do. :\

Good to see some sort of beta actiona going on here.


aw comon...
don't be like that...

yur getting credit in this ^_0

for what:
you're the one who told me of the pmd extension
and you helped inspire me on this...

not only that,
but you got all those losers over at SWF to help me...
well partially <_<
they still won't reply to anything I post...
leaving me in the dust... DX

granted they're getting credit for helping me on the format...
but geeze (at them)
I had to do most of the work myself on it...

you did alot here roo.
don't forget that :)

EDIT:
btw, I call them losers because they quit and left...


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 07:42:03 AM
@BJ96:

hey,
can you think of a way to transfer the import data to the converter (converting it to a raw format),
then take the data from the converter and convert it to the export data...

when importing to the converter,
you can re-organize the data to a conveinient format to be more compatible between file types...

thing is...
I need a good way to be able to organize the data...
can you help on that?? :/


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 19, 2010, 01:01:02 PM
I believe I can make it output an txt "information file" which could list every part of the file imported. That way you can take that file and convert it to any other easily. What the converter does is it finds each part (definitions, bones, materials, polys, etc) and reads them, finding each small part. It interprets each part and then takes those parts and rearranges them into the format specified. What the txt file would show is each small part.

btw you have 666 posts I don't wanna die plz


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 01:49:57 PM
I believe I can make it output an txt "information file" which could list every part of the file imported. That way you can take that file and convert it to any other easily. What the converter does is it finds each part (definitions, bones, materials, polys, etc) and reads them, finding each small part. It interprets each part and then takes those parts and rearranges them into the format specified. What the txt file would show is each small part.

btw you have 666 posts I don't wanna die plz

actually...
you've just given me a better idea :D

a tmp file in xml format...
but after creating it, how do you delete it after using it :/

that's prbly not a Q I should ask here :P

thanx though :D


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 19, 2010, 01:54:57 PM
No problem, and you could just delete it by selecting it and deleting it lol
but you can delete it using C# if you want too


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 02:07:30 PM
I've got the method here: =)
http://tcll5850.proboards.com/index.cgi?action=gotopost&board=python&thread=74&post=352

thanx but I'll stick with Py ^_0
there is a way...
I just have to research it :P

I'll be busy for a little now =D


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 19, 2010, 02:13:42 PM
Mmmmk good luck!

I've been making some progress myself ;D


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 02:38:17 PM
heh... luck...

apperently luck has a thing against me today...

when I go to save a file,
I type 'export' and it's supposed to add '.dae' or whatever...
but it don't even though I have the format selected...

geeze... D:


Title: Re: About DAE to MDL0 Conversion
Post by: Sveet on December 19, 2010, 05:45:07 PM
making my presence known here. reading through this entire thread soon.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 19, 2010, 05:58:18 PM
Welcome to da club.

 :af:


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 06:07:04 PM
making my presence known here. reading through this entire thread soon.

hey :D
glad to see ya :3

I know this is brawl and all...
but it'll be good to have a melee discussion going on :D

it's actually something we plan for future implementations.
...I plan it now though as I'm working on both :P


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 06:21:31 PM
well, as a minor flaw with my converter...
you guys will have to type the export extension...

I'll try to fix this,
but this is just a heads up for ya :/

it goes by the export extension to choose the export format...
the format selection will give you a list of avaliable formats to export to ;)


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on December 19, 2010, 06:43:28 PM
Wait, will this allow ANY model to be ported into brawl?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 19, 2010, 06:46:12 PM
Yep.


Title: Re: About DAE to MDL0 Conversion
Post by: Chuy on December 19, 2010, 06:55:42 PM
Reading through this thread you guys have successfully confused me :/
All i'm getting is that you guys are pretty close to a converter right?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 19, 2010, 07:02:15 PM
All i'm getting is that you guys are pretty close to a converter right?

Two seperate converters. One is in python and the other in C# and C++. We just need to get the code down and make it work.


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on December 19, 2010, 07:03:17 PM
Yep.

And bones will be kept?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 19, 2010, 07:09:04 PM
Yep.


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on December 19, 2010, 07:13:43 PM
:D
Awesome.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 19, 2010, 07:25:58 PM
Yep. ;D


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 07:26:33 PM

well one of my export formats will be .blend
(the blender format)
^blender supports everything in it's files


Title: Re: About DAE to MDL0 Conversion
Post by: Link40 on December 19, 2010, 08:02:57 PM
What you are doing guys is awesome. The day the converter will be ready, it will revolutionize brawl hacking.
You rock ! :D


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 19, 2010, 08:12:50 PM
lol thanx (from us all)

I personnally am doing it for a video I'm making :/

I won't tell the title until I release it ;)


Title: Re: About DAE to MDL0 Conversion
Post by: Sveet on December 19, 2010, 09:27:57 PM
oh this thread is all brawl info?

:c


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 20, 2010, 01:49:59 PM
oh this thread is all brawl info?

:c

I know...
we need melee going on here as well...

it'll help us both in understanding the dat file. :/


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 20, 2010, 04:45:09 PM
hey sveet...

why don't you help in understanding the format...
revel doesn't seem to want to be to informative about it...

what can you get from this:
Code:
/*****************************************************************************
 * dat.bt - Structure definitions for Super Smash Brothers Melee - dat file related entities.
 *
 *****************************************************************************
 * Revision History:
 *  2009/09/29 - revel8n - Original
 *  2010/02/22 - revel8n - Changes based on information from breakpoint
 *  2010/02/22 - revel8n - More structure updates
 *  2010/02/23 - revel8n - Started adding other structures (FIGHTER and FIGATREE)
 */

#include "include\common-types.bt"

SetReadOnly(true);

// #pragma displayname("dat structures")
// #pragma fileextensions(".dat")

// #pragma byteorder(big_endian)
BigEndian();

// mark used bytes with a light green background

local int64 filePos = FTell();

// DAT_FILE File Structure
struct DAT_FILE
{
// #pragma lockAt(0x00000000)

// DAT_HEADER - DAT file header information structure
SetBackColor(cLtGreen);
struct DAT_HEADER
{
// 0x00
uint32 fileSize0x00                 <format = hex>;
uint32 dataBlockSize0x04            <format = hex>; // size of main data block
uint32 relocationTableCount0x08;                    // unknown data size / 4
uint32 rootCount0x0C;                               // unknown data size / 8
// if combined "data sizes" + 0x20 is less than file size, then offset to string table?
// overwritten data addresses (as such, assumed they are unimportant?)
// - 0x20 - start + 0x20?
// - 0x24 - start + dataBlockSize0x04 + 0x20 - offsets to offsets?
// - 0x28 - start + [0x24] + (relocationTableCount0x08 * 4)
// - 0x2C - start + [0x28] + (jobjCount0x0C * 8)
// - 0x30 - start + [0x2C] + (unknown0x10 * 8)
// - 0x3C - or'ed with 0x01
// - 0x40 - start
// 0x10
uint32 unknown0x10; // unknown data size / 8
uint32 unknown0x14; // '001B' in main Pl*.dat files
uint32 unknown0x18;
uint32 unknown0x1C;
} fileHeader;

if (0 != fileHeader.dataBlockSize0x04 && 0 < fileHeader.relocationTableCount0x08)
{
FSeek(0x20 + fileHeader.dataBlockSize0x04);
SetBackColor(cLtGreen);
uint32 relocationTable[fileHeader.relocationTableCount0x08] <format = hex>;

local uint32 offsetNum = 0;

filePos = FTell();

FSeek(0x20 + fileHeader.dataBlockSize0x04);
SetBackColor(cLtRed);
struct
{
for (offsetNum = 0; offsetNum < fileHeader.relocationTableCount0x08; ++offsetNum)
{
FSeek(0x20 + relocationTable[offsetNum]);
uint32 mappedOffsets <format = hex>;
}
FSeek(filePos);
} relocatedOffsets;

FSeek(0x20 + fileHeader.dataBlockSize0x04);
SetBackColor(cLtBlue);
struct
{
for (offsetNum = 0; offsetNum < fileHeader.relocationTableCount0x08; ++offsetNum)
{
//FSeek(0x20 + ReadUInt(0x20 + relocationTable[offsetNum]));
FSeek(0x20 + relocatedOffsets.mappedOffsets[offsetNum]);
uint16 mappedData <format = hex>;
}
FSeek(filePos);
} relocatedData;
}

if (0 < fileHeader.rootCount0x0C)
{
FSeek(0x20 + fileHeader.dataBlockSize0x04 + (fileHeader.relocationTableCount0x08 * 4));
SetBackColor(cLtRed);
struct
{
struct
{
uint32 rootOffset0x00 <format = hex>;
uint32 stringTableOffset0x04 <format = hex>; // offset to name string?

filePos = FTell();
FSeek(0x20 + rootOffset0x00);
SetBackColor(cLtBlue);
uint16 mappedData <format = hex>;
FSeek(filePos);
} rootNodes[fileHeader.rootCount0x0C] <optimize = false>;
} rootNodes;
}

if (0 < fileHeader.unknown0x10)
{
FSeek(0x20 + fileHeader.dataBlockSize0x04 + (fileHeader.relocationTableCount0x08 * 4) + (fileHeader.rootCount0x0C * 8));
SetBackColor(cLtBlue);
struct
{
uint32 unknown0x00;
uint32 unknown0x04;
} unknownData0x10[fileHeader.unknown0x10];
}

// string table data
if (0 < fileHeader.rootCount0x0C)
{
FSeek(0x20 + fileHeader.dataBlockSize0x04 + (fileHeader.relocationTableCount0x08 * 4) + (fileHeader.rootCount0x0C * 8) + (fileHeader.unknown0x10 * 8));
SetBackColor(cLtYellow);
struct
{
struct
{
string nodeName0x00;
} stringTable[fileHeader.rootCount0x0C] <optimize = false>;
} stringTable;
}
};

struct DAT_FILE fileInfo;

here's the common types:
Code:
/*****************************************************************************
 * common-types.bt - Common type definition used in binary formats.
 *
 *****************************************************************************
 * Revision History:
 *  2009/03/16 - GWC - Original
 *  2009/03/18 - GWC - Added type parsing functions
 */

typedef byte int8;
typedef ubyte uint8;

typedef union
{
int8 v[4];
struct
{
int8 x, y, z, w;
} vec4;
} byte4 <read=byte4Read, write=byte4Write>;

typedef union
{
uint8 v[4];
struct
{
uint8 x, y, z, w;
} vec4;
} ubyte4 <read=ubyte4Read, write=ubyte4Write>;

typedef union
{
int16 v[2];
struct
{
int16 x, y;
} vec2;
} short2 <read=short2Read, write=short2Write>;

typedef union
{
int16 v[3];
struct
{
int16 x, y, z;
} vec3;
} short3 <read=short3Read, write=short3Write>;

typedef union
{
int16 v[4];
struct
{
int16 x, y, z, w;
} vec4;
} short4 <read=short4Read, write=short4Write>;

typedef union
{
float v[2];
struct
{
float x, y;
} vec2;
} float2 <read=float2Read, write=float2Write>;

typedef union
{
float v[3];
struct
{
float x, y, z;
} vec3;
} float3 <read=float3Read, write=float3Write>;

typedef union
{
float v[4];
struct
{
float x, y, z, w;
} vec4;
} float4 <read=float4Read, write=float4Write>;

typedef struct
{
union
{
float v[4];
float2 rows[2];
} vec2x2;
} float2x2;

typedef struct
{
union
{
float v[6];
float3 rows[2];
} vec2x3;
} float2x3;

typedef struct
{
union
{
float v[9];
float3 rows[3];
} vec3x3;
} float3x3;

typedef struct
{
union
{
float v[12];
float3 rows[4];
} vec4x3;
} float4x3;

typedef struct
{
union
{
float v[8];
float4 rows[2];
} vec2x4;
} float2x4;

typedef struct
{
union
{
float v[12];
float4 rows[3];
} vec3x4;
} float3x4;

typedef struct
{
union
{
float v[16];
float4 rows[4];
} vec4x4;
} float4x4;


// byte4 parsing functions
string byte4Read( const byte4 &v )
{
local int32 t[4] = {v.v[0], v.v[1], v.v[2], v.v[3]};
string s;   
SPrintf( s, "(%6d, %6d, %6d, %6d)", t[0], t[1], t[2], t[3] );
return s;
}

void byte4Write( byte4 &v, string s )
{
SScanf( s, "(%d, %d, %d, %d)", v.v[0], v.v[1], v.v[2], v.v[3] );
}

// ubyte4 parsing functions
string ubyte4Read( const ubyte4 &v )
{
string s;   
SPrintf( s, "(%4u, %4u, %4u, %4u)", v.v[0], v.v[1], v.v[2], v.v[3] );
return s;
}

void ubyte4Write( ubyte4 &v, string s )
{
SScanf( s, "(%u, %u, %u, %u)", v.v[0], v.v[1], v.v[2], v.v[3] );
}

// short2 parsing functions
string short2Read( const short2 &v )
{
local int32 t[2] = {v.v[0], v.v[1]};
string s;   
SPrintf( s, "(%6d, %6d)", t[0], t[1] );
return s;
}

void short2Write( short2 &v, string s )
{
SScanf( s, "(%d, %d)", v.v[0], v.v[1] );
}

// short3 parsing functions
string short3Read( const short3 &v )
{
local int32 t[3] = {v.v[0], v.v[1], v.v[2]};
string s;   
SPrintf( s, "(%6d, %6d, %6d)", t[0], t[1], t[2] );
return s;
}

void short3Write( short3 &v, string s )
{
SScanf( s, "(%d, %d, %d)", v.v[0], v.v[1], v.v[2] );
}

// short4 parsing functions
string short4Read( const short4 &v )
{
local int32 t[4] = {v.v[0], v.v[1], v.v[2], v.v[3]};
string s;   
SPrintf( s, "(%6d, %6d, %6d, %6d)", t[0], t[1], t[2], t[3] );
return s;
}

void short4Write( short4 &v, string s )
{
SScanf( s, "(%d, %d, %d, %d)", v.v[0], v.v[1], v.v[2], v.v[3] );
}

// float2 parsing functions
string float2Read( const float2 &v )
{
string s;   
SPrintf( s, "(%14f, %14f)", v.v[0], v.v[1] );
return s;
}

void float2Write( float2 &v, string s )
{
SScanf( s, "(%f, %f)", v.v[0], v.v[1] );
}

// float3 parsing functions
string float3Read( const float3 &v )
{
string s;   
SPrintf( s, "(%14f, %14f, %14f)", v.v[0], v.v[1], v.v[2] );
return s;
}

void float3Write( float3 &v, string s )
{
SScanf( s, "(%f, %f, %f)", v.v[0], v.v[1], v.v[2] );
}

// float4 parsing functions
string float4Read( const float4 &v )
{
string s;   
SPrintf( s, "(%14f, %14f, %14f, %14f)", v.v[0], v.v[1], v.v[2], v.v[3] );
return s;
}

void float4Write( float4 &v, string s )
{
SScanf( s, "(%f, %f, %f, %f)", v.v[0], v.v[1], v.v[2], v.v[3] );
}


Title: Re: About DAE to MDL0 Conversion
Post by: GentlemanPotato on December 20, 2010, 07:40:29 PM
I never thought this converter would ever be made but it looks like you guys are actually gonna do it.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 20, 2010, 08:36:32 PM
I never thought this converter would ever be made but it looks like you guys are actually gonna do it.

I've had my intentions on this for long enough...
I can't just up and turn back now...
I'm way too far into it and needing it...

so I'm gonna go through with it (:<


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 20, 2010, 08:46:00 PM
so I'm gonna go through with it (:<


Haha that's my trademark smiley (:<
Yeah I've been waiting on it, but nobody stepped up.

(http://w5ywrth4wrtj54wb54h4ewbrthbhhuqh3rubtho8uobh4uob5.webs.com/Dae2Smash.jpg)


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on December 20, 2010, 08:49:28 PM
So... 3DS will be supported, right?
When this comes out, here's what I'm importing:
(http://dl.dropbox.com/u/5869687/OutsetModelPreview.png)
No water yet, but pirate ship has that...
Also, what's the estimated release time on this?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 20, 2010, 08:53:10 PM
You'll have to convert the 3ds to dae... Pretty sick tho

The release date is as soon as possible. I'm gonna give myself until Jan. 1st at minimum
and August 31st at latest. Any time between there I guess, it depends on how much time I have.

idk what Tcll's release date is


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 20, 2010, 09:10:37 PM
I'll add a 3DS plugin
but that'll come later...

I wont have a release date :P
I can never complete anything by that time

but I will have a percentage :)

the converter itself is pretty much done...
it's basically the plugins that do all the work :/

but yea...
stuff works better when it's done that way...
I like to release it error free.

EDIT:
you can watch development under this thread:
http://tcll5850.proboards.com/index.cgi?action=display&board=python&thread=74&page=1
you'll have to subscribe though...
^no big deal there, I'm the only admin :D


Title: Re: About DAE to MDL0 Conversion
Post by: Tempo_ on December 20, 2010, 09:17:11 PM
hype...
Hype...
HYPE!!!

Must grab MMD models.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 20, 2010, 09:22:19 PM
lol, gonna add .pmd to mdl0 after I finish .dae to mdl0 completely ;D


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 20, 2010, 09:27:07 PM
Your making .pmd to .MDL0?!
*takes out paper*
Could I have your autograph? :3


Title: Re: About DAE to MDL0 Conversion
Post by: Gamma Ridley on December 20, 2010, 09:27:39 PM
.pak! .pak!


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 20, 2010, 09:36:10 PM
(http://w5ywrth4wrtj54wb54h4ewbrthbhhuqh3rubtho8uobh4uob5.webs.com/5e8bcbf39a0f2444437297a531683966.png)

lololololololololol

I gotz me the PMD editor source, so I should be able to get the offsets for everything from that... Luckily C# can't be written in Japanese :srs:


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 20, 2010, 09:45:13 PM
([url]http://w5ywrth4wrtj54wb54h4ewbrthbhhuqh3rubtho8uobh4uob5.webs.com/5e8bcbf39a0f2444437297a531683966.png[/url])

lololololololololol

I gotz me the PMD editor source, so I should be able to get the offsets for everything from that... Luckily C# can't be written in Japanese :srs:


Thats a good thing isn't it?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 20, 2010, 09:45:32 PM
Yep.


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 20, 2010, 09:50:47 PM
Good then.

Short answers FTW!! Now to sing a song. Old macdonald had a farm, E-I-E-I-O!!
And on that farm he had a Roo, E-I-E-I-O!!
With a Roo Roo here and a Roo Roo there,
Here a Roo, there a Roo, everywhere a Roo Roo, Old Macdonald had a farm,
EEEEEEEE-IIIIIIIIIIIII-EEEEEEEEEEEEEE-IIIIIIIIIIIIIIII-OOOOOOOOOOOOOO


Title: Re: About DAE to MDL0 Conversion
Post by: TommoPuppy on December 20, 2010, 10:12:11 PM
GET HYPE!

I really wish I could help out, but my programming knowledge is limited, and I have not much experience with dealing with binary files either.


Title: Re: About DAE to MDL0 Conversion
Post by: Ultraxwing on December 21, 2010, 08:51:03 AM
oooooh this sounds VERY promising.

maybe we could turn other models into DAE?

or is DAE the main focus?

oooh and melee models will flipping bad ace!

an official mewtwo model, actual pichu model, so many more =P

what if we converted the original N64 models to dae, then to .MDL0..

i would do it for "N64 Brawl."

either way, this looks very promising.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 21, 2010, 12:42:33 PM
Well my main focus right now is DAE to MDL0. But hopefully I'll be able to add support for more formats later.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 21, 2010, 12:51:51 PM
oooooh this sounds VERY promising.

maybe we could turn other models into DAE?

or is DAE the main focus?

oooh and melee models will flipping bad ace!

an official mewtwo model, actual pichu model, so many more =P

what if we converted the original N64 models to dae, then to .MDL0..

i would do it for "N64 Brawl."

either way, this looks very promising.

I'm working on getting MDL0 to a perfect DAE right now...
currently there's no converter that can do that yet...

and it'll help me learn the unknown stuff to help me build an MDL0 from scratch

I still need help with DAT right now...

I am avenging you Pichu <_<
for you will be in brawl so I can main you once more >:3

I'm adding PMD as well

but my main focus is getting Melee and Brawl working

btw blend format is te best format to convert to.
it opens directly with blender and supports everything


Title: Re: About DAE to MDL0 Conversion
Post by: Sveet on December 21, 2010, 04:28:24 PM
Alright so someone give me a summery of whats going on here. From what i've gathered thru my reading so far, DAE is a sort of common graphics format. Tcll, BlackJax and probably others are working on getting a converter for ___ to DAE and DAE to ___.

Without going in depth on the details (yet), can someone give me an overview of the format and how it relates to the Melee .DAT format?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 21, 2010, 04:36:06 PM
Alright so someone give me a summery of whats going on here. From what i've gathered thru my reading so far, DAE is a sort of common graphics format. Tcll, BlackJax and probably others are working on getting a converter for ___ to DAE and DAE to ___.

Without going in depth on the details (yet), can someone give me an overview of the format and how it relates to the Melee .DAT format?

well, the dae format doesn't really relate the the dat format at all...
the conversion to it will allow you to import things such as bones...
although it's not the best of all formats,
it's still better than the lowly commonly used obj format...

but yea... blend is one of the best formats to convert to which is my next objective...
(since I'm not just converting to dae)

I'm making an interchange format converter basically...
like MDL0 to PMD :P

and there are 2 basic model options, but they prbly won't be used :/
OBJ and RAW

they only return a basic textured boneless model :|
^(why they are only set as export options)


Title: Re: About DAE to MDL0 Conversion
Post by: Sveet on December 21, 2010, 05:17:18 PM
So this thread contains information on modeling and modeling formats?

How much information is known about the melee DAT format in regards to the modeling? I read on another site about some formats in the dat (40/C0 i think was one). How much of the DAT file relates to the graphics of the game (stage, characters, textures, ect) and how much relates to the physics (character stats, stage movement, ect)?

edit- how much is actually known about the DAT file at all? my primary goal right now is to extract all information from a DAT file.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 21, 2010, 05:52:19 PM
@sveet:
this thread is the goldmine of all dat info:
and my past years of work.

http://emutalk.net/showthread.php?t=50312

it's dead now...

and the 40/C0 thing dealt with stages
the thread takes care of more of the modelling stuff...

I've got the modelling side...
stages are more of Milun's bag...

do you think I should bring him over here as well?? :/
too bad Revel8n had to die... T.T
he was a big help in everything

but yea...
I basically extended the work of Jahra!n's converter with the help of Revel


Title: Re: About DAE to MDL0 Conversion
Post by: SmashHackers on December 21, 2010, 10:42:46 PM
My only question is: When this is done will models have working bones?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 21, 2010, 11:07:50 PM
Yeah. You'll be able to import rigged characters.


Title: Re: About DAE to MDL0 Conversion
Post by: Sveet on December 22, 2010, 02:51:23 AM
Alright. How far did you make it? Did anyone ever finish a full converter?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 22, 2010, 06:51:31 AM
Alright. How far did you make it? Did anyone ever finish a full converter?

no...
the relocation table is my problem...
more like IDK now to decide the differences between the data's...

@SH:
of course :P
it'll do more than that even :D

shoot I mean blend can handle everything the MDL0 does, and more
but yea...

it's the back conversion that has me :/
apperently it's easier to read an MDL0 than it is to write one...


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 22, 2010, 07:06:22 AM
hey BJ...

I've figured out something with the offsets...
I'm looking at them quite differently now...
take a look at this:
(http://lh6.ggpht.com/_IteXPmeC6ek/TRIEN1WgY4I/AAAAAAAACPk/GrUOcYqzpmI/relocations.jpg)
the reason there's a line through the last 2 boxes is because that's how I used to look at them...

so thit's the new way now...
can you gather anything from that??

and btw, this confuses me:
00 00 00 48 00 00 00 03
FF FF 00 00 00 01 00 00 00 00 00 00 00 00 00 00
00 3D 00 00 00 00 00 03 00 00 BF 3C 00 00 26 90
00 38 00 00 00 01 00 02 00 00 BF 4C 00 00 72 10
00 39 00 00 00 02 00 03 00 00 BF 5C 00 00 74 90


notice the order...

EDIT:
I think the cyan block is the offset index...
but the 2nd one still confuses me as there's 2 '03' instances :/
as well as 2 '01' instances in the magenta block

EDIT2:
IDK for sure, but I think the indexes are read bacwards
(num_offsets -= 1)
which would make the last read be the 'FF FF' index...
even though that index does contain data,
I think everyone has been reading the indexes forward,
and compairing them to the number of offsets...

my words are getting messed up and I'm thinking too fast XD
but it's an idea that seems to explain that last part...


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 22, 2010, 09:27:14 AM
hmm...
apperently Pharrox was also working on dae to mdl0 conversion...

and I can read C++ better now :D

everything is starting to make sense now :D



Title: Re: About DAE to MDL0 Conversion
Post by: Sveet on December 22, 2010, 11:20:30 AM
Woah column data? I've never seen that before. My instincts tell me that can't be how it is running...


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 22, 2010, 11:29:18 AM
([url]http://lh6.ggpht.com/_IteXPmeC6ek/TRIEN1WgY4I/AAAAAAAACPk/GrUOcYqzpmI/relocations.jpg[/url])


What's that relocation table for

apperently Pharrox was also working on dae to mdl0 conversion...


As stated in the OP

and I can read C++ better now :D
everything is starting to make sense now :D


It'd better :srs:
lol

It's gonna be freakin' insane to build the bone structure... and everything in the mdl0 is linked to one another by an id... gonna have to use lots of variables in mah codez


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 22, 2010, 02:18:15 PM
What's that relocation table for
IDK...
I just pulled some random data is all...
but I think it's Pachi's verts :/
Quote
As stated in the OP
hmm...
didn't notice that...  :>.>:
Quote
It's gonna be freakin' insane to build the bone structure... and everything in the mdl0 is linked to one another by an id... gonna have to use lots of variables in mah codez
possibly...
including the relocation table XD


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 22, 2010, 02:19:32 PM
Woah column data? I've never seen that before. My instincts tell me that can't be how it is running...

eheh...
I'm afraid I didn't catch that :P


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 22, 2010, 03:12:43 PM
yo  ;D

check my progress on the import 8)
http://tcll5850.proboards.com/index.cgi?action=gotopost&board=python&thread=74&post=363
MDL0 to DAE conversion is coming along well  :af2:

I still need to get to the verts though :/
but I will ;)

EDIT:
triple post :o
*watches for bahnhamma*


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 22, 2010, 04:30:17 PM
Here I posted. You can post moar :P
Tell me how you converted it when it's done btw
(Where you read the bytes and where you put them in the xml and stuff)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 22, 2010, 04:31:53 PM
Here I posted. You can post moar :P
Tell me how you converted it when it's done btw
(Where you read the bytes and where you put them in the xml and stuff)

look at my template XD
it's supposed to tell you that :P

I can help if you mis-understand something though ;)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 23, 2010, 06:27:28 AM
well I've gotten the vert data to export in the debug info
link: http://tcll5850.proboards.com/index.cgi?action=gotopost&board=python&thread=74&post=364

and I figured out how the modifier works  :af2:

the modifier is only for 8bit or 16bit conversions
here's the vector conversion code:

def vec(dtyp,mult): #decide the type of conversion to use
            if dtyp==0 :return ui( fr.read(1) ) / ( float(2)^mult ) #fixed point ui8
            if dtyp==1 :return si8( fr.read(1) ) / ( float(2)^mult ) #fixed point si8
            if dtyp==2 :return ui( fr.read(2) ) / ( float(2)^mult ) #fixed point ui16
            if dtyp==3 :return si16( fr.read(2) ) / ( float(2)^mult ) #fixed point si16
            if dtyp==4 :return fl32( fr.read(4) ) #floating point fl32

'fr' is the mdl0
'dtyp' is the data type
'mult' is the modifier (multiplier)

when calling the code:
Quote
...
data_type = ui( fr.read(4) )
modifier = ui( fr.read(1) )

X = vec(data_type,modifier)
Y = vec(data_type,modifier)
Z = vec(data_type,modifier)


btw, this is for any vector (verts, normals, and UV's)

and yes, I comment like that in the code constantly


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 23, 2010, 07:33:07 AM
hey BJ...
you were talking about animation converters...

well...
collada and directx(ascii) support animations,
and of course blend

I suppose I could write a converter for those...
blend files will have to be library-linked to be imported...
DAE and X files will have to be injected...

I brought that up because I need them...


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 23, 2010, 12:39:49 PM
I figured out how the modifier works  :af2:

the modifier is only for 8bit or 16bit conversions
here's the vector conversion code:

def vec(dtyp,mult): #decide the type of conversion to use
            if dtyp==0 :return ui( fr.read(1) ) / ( float(2)^mult ) #fixed point ui8
            if dtyp==1 :return si8( fr.read(1) ) / ( float(2)^mult ) #fixed point si8
            if dtyp==2 :return ui( fr.read(2) ) / ( float(2)^mult ) #fixed point ui16
            if dtyp==3 :return si16( fr.read(2) ) / ( float(2)^mult ) #fixed point si16
            if dtyp==4 :return fl32( fr.read(4) ) #floating point fl32

'fr' is the mdl0
'dtyp' is the data type
'mult' is the modifier (multiplier)

when calling the code:
Quote
...
data_type = ui( fr.read(4) )
modifier = ui( fr.read(1) )

X = vec(data_type,modifier)
Y = vec(data_type,modifier)
Z = vec(data_type,modifier)

btw, this is for any vector (verts, normals, and UV's)

and yes, I comment like that in the code constantly

Holy -blam!- so I can use that in reverse to write the floats for the verts/normals/uvs in the hex?

hey BJ...
you were talking about animation converters...

well...
collada and directx(ascii) support animations,
and of course blend

I suppose I could write a converter for those...
blend files will have to be library-linked to be imported...
DAE and X files will have to be injected...

I brought that up because I need them...

Ok heck yeah do eet!

Btw, I got this collada loader to help me... I got it to read all the verts, materials, bone structure, etc from the xml!!!!!1


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 23, 2010, 02:46:09 PM
yea you can
but include these as well:

#--<<common functions>>--
import  struct as  S
def  hex(this): return  this.encode('hex') #return the hex value of a char
def  ui(this): return  int(this.encode('hex'),16) #return an unsigned 8bit, 16bit, or 32bit int (most common)
def  si8(this): return  S.unpack("b", this)[0] #return a signed 8bit int
def  ui16(this): return  S.unpack(">H", this)[0] #return an unsigned 16bit int (I think)
def  si16(this): return  S.unpack(">h", this)[0] #return a signed 16bit int
def  fl32(this): return  S.unpack(">f", this)[0] #return a 32bit float
def  si32(this): return  S.unpack(">l", this)[0] #return a signed 32bit int
#--<</common functions>>--

^they're what actually do the conversions


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 23, 2010, 02:55:33 PM
ok, now I gotta turn it into C#


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 24, 2010, 07:16:44 AM
well I've just asked on DW for info that may prove helpful in deciphering the mdl0 format...

http://www.daniweb.com/forums/post1425660.html#post1425660

if anyone here want's to help, click the link :)

EDIT:
I have my tmp format posted:
http://tcll5850.proboards.com/index.cgi?action=gotopost&board=python&thread=74&post=365


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 24, 2010, 01:49:28 PM
hey BJ

Will's loads the mdl0 into mem as [##,##,##, ...
and accesses those bytes at a specified index during conversion.

just posting my findigs is all :)

EDIT:
you can delete the ">H" function
it is unsigned which is takenen care of by the ui function
ui = unsigned int
si = signed int
fl = float


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 24, 2010, 06:03:58 PM
hey...

I've shortened the common functions by quite a bit:

#--<<common functions>>--
import struct as S
def hex(this): return this.encode('hex') #return the hex value of a char
def ui(this): return int(this.encode('hex'),16) #return an unsigned 8bit, 16bit, or 32bit int (most common)
def si(this): return int(long(this.encode('hex'),16)-2**32) #return a signed 8bit, 16bit, or 32bit int
def fl(this): return S.unpack(">f", this)[0] #return a 32bit float (highly common)
#--<</common functions>>--


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 24, 2010, 06:04:47 PM
Kewl. I'm still working on getting the verts from the xml...


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 24, 2010, 08:28:18 PM
oh yea...
and modded these...

^ was wrong
** was right

def vec(dtyp,mult): #decide the type of conversion to use
                if dtyp==0 :return ui(fr.read(1))/(float(2)**mult) #fixed point ui8
                if dtyp==1 :return si(fr.read(1))/(float(2)**mult) #fixed point si8
                if dtyp==2 :return ui(fr.read(2))/(float(2)**mult) #fixed point ui16
                if dtyp==3 :return si(fr.read(2))/(float(2)**mult) #fixed point si16
                if dtyp==4 :return fl(fr.read(4)) #floating point fl


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 25, 2010, 07:07:56 AM
william didn't know what the weights were XD

uint16_t unknowncount = BigUInt16(data, 102);

data 102 (in polygon/object header) <- can be called either
is the middle of the weight count... ui(data[100:104])

it works like that in Py btw (if the file were loaded that way)


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 25, 2010, 09:43:09 PM
Boom. Check it out:
Code:
Converted the String value '-2.07217' to the String value C00093CDDD6E04C0.
Converted the String value '7.18786' to the String value 401CC05E5F30E7FF.
Converted the String value '0.462265' to the String value 3FDD95BFF04577D9.
Converted the String value '-2.06874' to the String value C0008CC78E9F6A94.
Converted the String value '7.19277' to the String value 401CC5657FB69985.
Converted the String value '0.393945' to the String value 3FD9366516DB0DD8.
Converted the String value '-2.07101' to the String value C000916DB0DD82FD.
Converted the String value '7.16143' to the String value 401CA54DE7EA5F85.
Converted the String value '0.391582' to the String value 3FD90FADF2ECF206.
Converted the String value '-2.07444' to the String value C0009873FFAC1D2A.
Converted the String value '7.15652' to the String value 401CA046C764AE00.
Converted the String value '0.459903' to the String value 3FDD6F0CFE154435.
Converted the String value '-2.07867' to the String value C000A11DBCA9691A.
Converted the String value '7.15047' to the String value 401C9A14CEC41DD2.
Converted the String value '0.544343' to the String value 3FE16B4202D9CF14.
Converted the String value '-2.0764' to the String value C0009C779A6B50B1.
Converted the String value '7.18181' to the String value 401CBA2C669057D1.
Converted the String value '0.546706' to the String value 3FE17E9D94D0DCFD.
Converted the String value '-2.0894' to the String value C000B71758E21965.
Converted the String value '7.00242' to the String value 401C027A63736CDF.
Converted the String value '0.533183' to the String value 3FE10FD5CB790FB6.
Converted the String value '-2.08713' to the String value C000B27136A400FC.
Converted the String value '7.03376' to the String value 401C2291FB3FA6DF.
Converted the String value '0.535545' to the String value 3FE1232F44912989.
Converted the String value '-2.0829' to the String value C000A9C779A6B50B.
Converted the String value '7.03982' to the String value 401C28C692F6E829.
Converted the String value '0.451105' to the String value 3FDCDEE78183F91E.
Converted the String value '-2.08517' to the String value C000AE6D9BE4CD75.
Converted the String value '7.00848' to the String value 401C08AEFB2AAE29.
Converted the String value '0.448742' to the String value 3FDCB8305D95DD4C.
Converted the String value '-2.09978' to the String value C000CC5974E65BEA.
Converted the String value '6.85918' to the String value 401B6FCCE1C58256.
Converted the String value '0.522384' to the String value 3FE0B75EA67E846A.
Converted the String value '-2.09751' to the String value C000C7B352A84381.
Converted the String value '6.89052' to the String value 401B8FE47991BC56.
Converted the String value '0.524747' to the String value 3FE0CABA38759253.
Converted the String value '-2.09328' to the String value C000BF0995AAF790.
Converted the String value '6.89658' to the String value 401B96191148FDA0.
Converted the String value '0.440306' to the String value 3FDC2DF9378EE286.
Converted the String value '-2.09555' to the String value C000C3AFB7E90FF9.
Converted the String value '6.86524' to the String value 401B7601797CC3A0.
Converted the String value '0.437944' to the String value 3FDC0746455EAEE2.
Converted the String value '-2.48001' to the String value C003D70F7B9E0610.
Converted the String value '7.21242' to the String value 401CD984A0E410B6.
Converted the String value '0.528684' to the String value 3FE0EAFAB53D640F.
Converted the String value '-2.48228' to the String value C003DBB59DDC1E79.
Converted the String value '7.18108' to the String value 401CB96D0917D6B6.
Converted the String value '0.526321' to the String value 3FE0D79F23465626.
Converted the String value '-2.47805' to the String value C003D30BE0DED289.
Converted the String value '7.18714' to the String value 401CBFA1A0CF1801.
Converted the String value '0.441881' to the String value 3FDC47C73EEE5259.
Converted the String value '-2.47578' to the String value C003CE65BEA0BA1F.
Converted the String value '7.21848' to the String value 401CDFB9389B5200.
Converted the String value '0.444243' to the String value 3FDC6E7A311E85FD.
Converted the String value '-2.49074' to the String value C003ED0917D6B65B.
Converted the String value '7.06437' to the String value 401C41EA35935FC4.
Converted the String value '0.517523' to the String value 3FE08F8C64FDB09A.
Converted the String value '-2.49301' to the String value C003F1AF3A14CEC4.
Converted the String value '7.03303' to the String value 401C21D29DC725C4.
Converted the String value '0.515161' to the String value 3FE07C32EBE596C8.
Converted the String value '-2.48878' to the String value C003E9057D1782D4.
Converted the String value '7.03909' to the String value 401C2807357E670E.
Converted the String value '0.43072' to the String value 3FDB90EA9E6EEB70.
Converted the String value '-2.48651' to the String value C003E45F5AD96A6A.
Converted the String value '7.07043' to the String value 401C481ECD4AA10E.
Converted the String value '0.433083' to the String value 3FDBB7A1C25D0742.
Converted the String value '-2.50112' to the String value C004024B33DAF8DF.
Converted the String value '6.92113' to the String value 401BAF3CB3E5753A.
Converted the String value '0.506725' to the String value 3FE0371758E21965.
Converted the String value '-2.50339' to the String value C00406F156191149.
Converted the String value '6.88979' to the String value 401B8F251C193B3A.
Converted the String value '0.504362' to the String value 3FE023BBC6EB0B7C.
Converted the String value '-2.49916' to the String value C003FE47991BC558.
Converted the String value '6.89585' to the String value 401B9559B3D07C85.
Converted the String value '0.419922' to the String value 3FDAE0008637BD06.
Converted the String value '-2.49689' to the String value C003F9A176DDACEF.
Converted the String value '6.92719' to the String value 401BB5714B9CB685.
Converted the String value '0.422284' to the String value 3FDB06B37867F0AA.
Converted the String value '-2.09213' to the String value C000BCAEA747D806.
Converted the String value '6.87014' to the String value 401B7B05FAEBC409.
Converted the String value '0.369624' to the String value 3FD7A7EB6BF444E1.
Converted the String value '-2.08985' to the String value C000B80346DC5D64.
Converted the String value '6.90148' to the String value 401B9B1D92B7FE09.
Converted the String value '0.371986' to the String value 3FD7CE9E5E247885.
Converted the String value '-2.08635' to the String value C000B0D844D013A9.
Converted the String value '6.9065' to the String value 401BA04189374BC7.
Converted the String value '0.301985' to the String value 3FD353B8E4B87BDD.
Converted the String value '-2.08862' to the String value C000B57E670E2C13.
Converted the String value '6.87516' to the String value 401B8029F16B11C7.
Converted the String value '0.299622' to the String value 3FD32D01C0CA600B.
Converted the String value '-2.07947' to the String value C000A2C12AD81ADF.
Converted the String value '7.04472' to the String value 401C2DCB1465E892.
Converted the String value '0.382785' to the String value 3FD87F8CA8198F1D.
Converted the String value '-2.08174' to the String value C000A7674D163348.
Converted the String value '7.01338' to the String value 401C0DB37C99AE92.
Converted the String value '0.380422' to the String value 3FD858D5842B734B.
Converted the String value '-2.07597' to the String value C0009B9628CBD124.
Converted the String value '7.04975' to the String value 401C32F1A9FBE76D.
Converted the String value '0.312783' to the String value 3FD404A2FCEFAA47.
Converted the String value '-2.07824' to the String value C000A03C4B09E98E.
Converted the String value '7.01841' to the String value 401C12DA122FAD6D.
Converted the String value '0.310421' to the String value 3FD3DDF00ABF76A3.
Converted the String value '-2.06524' to the String value C000859C8C9320DA.
Converted the String value '7.19779' to the String value 401CCA897635E743.
Converted the String value '0.323944' to the String value 3FD4BB7F9D6F1130.
Converted the String value '-2.06751' to the String value C0008A42AED13943.
Converted the String value '7.16645' to the String value 401CAA71DE69AD43.
Converted the String value '0.321581' to the String value 3FD494C87980F55E.
Converted the String value '-2.47463' to the String value C003CC0AD03D9A95.
Converted the String value '7.19204' to the String value 401CC4A6223E186A.
Converted the String value '0.37356' to the String value 3FD7E86833C6002A.
Converted the String value '-2.47236' to the String value C003C764ADFF822C.
Converted the String value '7.22338' to the String value 401CE4BDBA0A5269.
Converted the String value '0.375923' to the String value 3FD80F1F57B41BFC.
Converted the String value '-2.48536' to the String value C003E2046C764AE0.
Converted the String value '7.044' to the String value 401C2D0E56041893.
Converted the String value '0.3624' to the String value 3FD7318FC504816F.
Converted the String value '-2.48309' to the String value C003DD5E4A383276.
Converted the String value '7.07533' to the String value 401C4D234EB9A177.
Converted the String value '0.364763' to the String value 3FD75846E8F29D41.
Converted the String value '-2.49574' to the String value C003F746887A8D65.
Converted the String value '6.90075' to the String value 401B9A5E353F7CEE.
Converted the String value '0.351601' to the String value 3FD680A17B0F6AD7.
Converted the String value '-2.49347' to the String value C003F2A0663C74FB.
Converted the String value '6.93209' to the String value 401BBA75CD0BB6ED.
Converted the String value '0.353964' to the String value 3FD6A7589EFD86A9.
Converted the String value '-2.47112' to the String value C003C4DA9003EEA2.
Converted the String value '7.19706' to the String value 401CC9CA18BD6627.
Converted the String value '0.303559' to the String value 3FD36D82BA5A0382.
Converted the String value '-2.46885' to the String value C003C0346DC5D639.
Converted the String value '7.2284' to the String value 401CE9E1B089A027.
Converted the String value '0.305921' to the String value 3FD39435AC8A3726.
Converted the String value '-2.48185' to the String value C003DAD42C3C9EED.
Converted the String value '7.04902' to the String value 401C32324C836651.
Converted the String value '0.292399' to the String value 3FD2B6AA4B9884C7.
Converted the String value '-2.47958' to the String value C003D62E09FE8683.
Converted the String value '7.08036' to the String value 401C5249E44FA051.
Converted the String value '0.294761' to the String value 3FD2DD5D3DC8B86B.
Converted the String value '-2.49223' to the String value C003F0164840E172.
Converted the String value '6.90577' to the String value 401B9F822BBECAAC.
Converted the String value '0.2816' to the String value 3FD205BC01A36E2F.
Converted the String value '-2.48996' to the String value C003EB702602C908.
Converted the String value '6.93711' to the String value 401BBF99C38B04AB.
Converted the String value '0.283963' to the String value 3FD22C7325918A01.

Although I'm pretty sure you said that each float was only 4 bytes long right? lol


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 26, 2010, 08:54:09 AM
yea...
32bit conversion is what you need :)

EDIT:
I'm still trying to figure out the polygon data :/
this is the part that confuses me:
http://www.daniweb.com/forums/post1426482.html#post1426482


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 26, 2010, 11:27:25 AM
Some guy posted. You might wanna check that out when you get back

And there's a slight problem with 32 bits:

[redacted]

See this: BitConverter.DoubleToInt64Bits(result);
There's no such thing as BitConverter.DoubleToInt32Bits(result); :(

Gonna have to find a workaround.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 26, 2010, 11:53:53 AM
Some guy posted. You might wanna check that out when you get back

And there's a slight problem with 32 bits:

See this: BitConverter.DoubleToInt64Bits(result);
There's no such thing as BitConverter.DoubleToInt32Bits(result); :(

Gonna have to find a workaround.

just tell him you've already got the list,
you just need a function to convert the floats to hex...

try google search: C# convert float to hex

see what google gives you ;)
I'm a master at google btw

just look for anything saying 32bit :)


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 26, 2010, 12:06:18 PM
I already know how to convert float to hex...
And I did Google it


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 26, 2010, 12:25:29 PM
I already know how to convert float to hex...
And I did Google it

well why you askin then =P


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 26, 2010, 12:32:42 PM
There was no question mark :P
I was telling you that converting to 32 bits isn't possible the way I'm converting it. I have to change it


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 26, 2010, 02:19:47 PM
There was no question mark :P
I was telling you that converting to 32 bits isn't possible the way I'm converting it. I have to change it

I see...

I'm on niquil right now and it sux... XP


Title: Re: About DAE to MDL0 Conversion
Post by: ds22 on December 26, 2010, 02:40:22 PM
If I may ask, how far are you with this converter?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 26, 2010, 02:52:53 PM
I've accomplished reading the vertices from the dae file and converting them to hex values for the mdl0:

Code:
Converted the String value '-2.07217' to 6F9E4C0.
Converted the String value '7.18786' to F32E640.
Converted the String value '0.462265' to 0AEEC3E.
Converted the String value '-2.06874' to 3C664C0.
Converted the String value '7.19277' to 2C2BE640.
Converted the String value '0.393945' to 29B3C93E.

Those conversions are incorrect though :( I'm working on it.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 26, 2010, 03:11:57 PM
@DS22:
his conversions were wrong :P

he's trying though...

I'm trying to decipher the polygon data

I've gotten verts, normals, and UV's to export to the obj already...
but there's still alot of stuff to go :/


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 28, 2010, 03:28:37 PM
It turns out those conversions were right. Just off by around 0.001% :af:
On to the next step!


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on December 28, 2010, 03:37:04 PM
And what step would that be?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 28, 2010, 03:43:46 PM
Getting the xmlreader to read all the elements named "float_array" instead of just the first.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 29, 2010, 07:01:04 AM
I've posted my table...
http://tcll5850.proboards.com/index.cgi?board=otherstuff&action=display&thread=78&page=1
it may benefit for others...

as for the PMD import script:
http://myfreefilehosting.com/f/f13a3652fc_0.02MB

@Roo
you already have this one...
don't bother DL-ing it :P

EDIT@BJ:
meet me on my chat O.o
I need to know something


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 30, 2010, 07:41:39 AM
hey BJ...
I kinda need your help...

as you know,
I've been working on trying to decipher the polygon data for quite some time now...
but everything I've tried hasn't seemed to work...

Pharrox dissappeared leaving me with crappy notes on them...
his code don't work completely...
will's code don't work for me...

I'm gonna have to go solo on this...

I've copied a bunch of headers and the points that go with them:
00 01 02 40 FF FF 78 40 FF FF FF FF 00 00 5E 05
00 00 00 03 00 00 00 15 00 00 00 E0 00 00 00 80
00 00 02 68 00 00 FE E0 00 00 FE E0 00 00 03 3C
00 00 2E 05 00 00 00 00 00 02 1E 54 00 00 00 00
00 00 17 26 00 00 0F 4E 00 00 00 00 00 00 FF FF
00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00 00 00 64

06 24 04 74 04 4B 00 00 C3


00 00 04 E0 FF FE 76 00 00 00 00 0F 00 00 54 00
00 00 00 02 00 00 00 15 00 00 00 E0 00 00 00 80
00 00 00 68 00 00 03 80 00 00 03 80 00 00 01 3C
00 00 2E 00 00 00 00 00 00 01 1C 24 00 00 00 01
00 00 00 CA 00 00 00 8C 00 01 00 01 00 00 FF FF
00 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00 00 00 64

50 4C 00 50


00 00 4B 80 FF FF D5 40 FF FF FF FF 00 00 1E 05
00 00 00 03 00 00 00 14 00 00 00 E0 00 00 00 80
00 00 00 A8 00 00 49 E0 00 00 49 E0 00 00 01 7C
00 00 26 05 00 00 00 00 00 00 98 AC 00 00 00 00
00 00 08 72 00 00 05 EC 00 00 00 00 FF FF FF FF
00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF 00 00 00 68

0F 2D 01 E6 01 DD 01 4F


00 00 02 80 FF FF 89 C0 00 00 00 04 00 00 14 00
00 00 00 02 00 00 00 14 00 00 00 E0 00 00 00 80
00 00 00 68 00 00 01 20 00 00 01 20 00 00 01 3C
00 00 26 00 00 00 00 00 00 00 4D 3C 00 00 00 01
00 00 00 4C 00 00 00 36 00 01 00 01 FF FF FF FF
00 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF 00 00 00 68

98 00 07



can you help me in deciphering the patterns of the headers so I can biuld a compatible scrpt??
(use my template to help you with compairing the headers)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on December 31, 2010, 08:22:53 AM
hey, take a look at this:
http://lh3.ggpht.com/_IteXPmeC6ek/TR3z0KbRreI/AAAAAAAACSg/DXLk1vCg9ko/small_find.jpg

just nothing but a small find that may lead to a big jump ;)


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 31, 2010, 12:32:22 PM
So the length of the points is in that random number? O_o

And since you have three whole posts to yourself up there lol I guess I'll post some great news myself.

Shoopdawoop:
(http://w5ywrth4wrtj54wb54h4ewbrthbhhuqh3rubtho8uobh4uob5.webs.com/hex.jpg)


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on December 31, 2010, 02:47:12 PM
Meaning???


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on December 31, 2010, 02:57:26 PM
Those are the first float values in the dae converted to hex, to be read in bytes of 4.

Ex:
-2.07217 = C0049E6F


Title: Re: About DAE to MDL0 Conversion
Post by: Pik on January 02, 2011, 01:08:46 PM
Cool stuff! Glad to know this stuff is moving, even slowly. At least someone's doing something.


The thread could use more attention though.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 02, 2011, 01:25:04 PM
The thread could use more attention though.

eh...
for once, I actually agree with that :/

I'm not the biggest fan of fame =.=


Title: Re: About DAE to MDL0 Conversion
Post by: Tempo_ on January 02, 2011, 09:03:22 PM
I'm fairly certain people pay attention to this. They just have nothing to really contribute, unless you're asking for compliments and stuff.

But you don't seem like that.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 03, 2011, 01:00:47 PM
I'm fairly certain people pay attention to this. They just have nothing to really contribute, unless you're asking for compliments and stuff.

But you don't seem like that.


eh...
you have a point...

it's I guess the views are only like 300-400 (should be more) :P

IDK...
wasn't really my biff anyways...
I only had the feeling and agreed with him :/

well...
I'm not too worried about it to say the least...
basically he mentioned it so I follow'd with my feelings... (how I am)


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 05, 2011, 11:20:34 AM
Hey, tcll, what type of coding are you using?  Visual basic c? c+? c++?

depending on which, i may be able to help....


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 05, 2011, 01:02:14 PM
Hey, tcll, what type of coding are you using?  Visual basic c? c+? c++?

depending on which, i may be able to help....


eh... Python...
I can read C codes a little now :/
but I'm a Py fan

please do help though ;D
what Q's do you have reguarding my position on the format?
or other Q's you may have :P

better

EDIT:
better yet, I'm stuck on the polygons...
mind lening some code/tips/info on how to figure out the face-points... ;D


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 05, 2011, 06:19:21 PM
Hey, tcll, what type of coding are you using?  Visual basic c? c+? c++?

depending on which, i may be able to help....

You could try to help me...? I'm in C#


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 05, 2011, 06:33:10 PM
@xxmasal22xx:
please come to my chat/site: :happy:
http://tcll5850.webfreehosting.net/

I could really use some help,
and things will go alot faster if you meet me there.

same for BJ as well ;)
he's doing something different with his code though...
but it follows along the same guidelines.

also...
I go to bed at 11:00... (skool)
so I may not be on once you get there :/
but then again I just may ;)


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 06, 2011, 08:30:31 AM
I may be some help...robably not though im a BEGINNER! big time....


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 06, 2011, 12:49:18 PM
I may be some help...robably not though im a BEGINNER! big time....

eh...
it's ok :)
let's see wat U got :D

shoot the more people working on this, the better off our converters are :)


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 06, 2011, 01:01:45 PM
I may be some help...robably not though im a BEGINNER! big time....

eh...
it's ok :)
let's see wat U got :D

shoot the more people working on this, the better off our converters are :)

ok....sooo..how would i be able to help in any way?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 06, 2011, 04:35:09 PM
ok....sooo..how would i be able to help in any way?

oh geeze...
I misunderstood you :P

I thought you ment help as in you had info we didn't know about... XP

eh...
I don't have anything atm, but BJ might...
what I have may be a little beyond yur grasp yet...
(need to figure out MDL0 face-points)

if you're good at hexing,
you could try to help me in figuring out MDL0 materials or shaders

note:
mat1 = shaders
mat2 = materials

Pikachu has 5 material objects that link between 3 materials:
main (basic colors)
yellow (FS eyes)
metal (self explanitory)
^those are in order btw ;)

do you dev games, or know anything about game-dev??


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 07, 2011, 07:57:33 AM
ok....sooo..how would i be able to help in any way?

oh geeze...
I misunderstood you :P

I thought you ment help as in you had info we didn't know about... XP

eh...
I don't have anything atm, but BJ might...
what I have may be a little beyond yur grasp yet...
(need to figure out MDL0 face-points)

if you're good at hexing,
you could try to help me in figuring out MDL0 materials or shaders

note:
mat1 = shaders
mat2 = materials

Pikachu has 5 material objects that link between 3 materials:
main (basic colors)
yellow (FS eyes)
metal (self explanitory)
^those are in order btw ;)

do you dev games, or know anything about game-dev??

Eh....Na, not rly...sorry man...If you have some time though, do you think you could try teacing me some of this? I'd rly like to be SOME help lol


Title: Re: About DAE to MDL0 Conversion
Post by: xetan2 on January 07, 2011, 08:01:09 AM
I'm fairly certain people pay attention to this. They just have nothing to really contribute, unless you're asking for compliments and stuff.

But you don't seem like that.

I have been paying attention to this, I'm trying to understand what's been posted so far to see if there is anything I can look for and contribute, It's just taking a while to understand all this.  I will do anything to help once I understand everything.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 07, 2011, 02:21:23 PM
I have been paying attention to this, I'm trying to understand what's been posted so far to see if there is anything I can look for and contribute, It's just taking a while to understand all this.  I will do anything to help once I understand everything.


well shoot XD
all ya had to do was ask :3

anyways, there's alot of places you'd have to look to fully understand what's going on here...
my history with MDL0 files goes back a long way...

I'll try to make it as easy as possible though ;)
are you a good hexer or progger??

Eh....Na, not rly...sorry man...If you have some time though, do you think you could try teacing me some of this? I'd rly like to be SOME help lol

heh... I have quite alot of time :D
^when it comes to stuf like this :)

first off, you'll need Hex-Edit, and my current template once I fix a few bugs <_<
you can get HexEdit (trial free version) here:
http://www.smashboards.com/showpost.php?p=11656041&postcount=2778

copy the template (when I post it), and paste it in:
C:\Documents and Settings\*user*\Application Data\ECSoftware\HexEdit\_mdl0.xml
and open an mdl0 file in HexEdit...

now, the template doesn't initiate automatically :/
when you open the mdl0,
go to 'view'-'template'-'split window'
and be sure to turn the auto sync on as well (looks like 3 red arrows "back, forth, back")

also, be sure to R-Click 'MDL0' and click 'Allow Editing'.
(it takes a while to load, but there's no errors with it this way)

EDIT:
I'll post my notes on the MDL0 format as well...
need to UD them right now :/


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 07, 2011, 06:15:19 PM
I have been paying attention to this, I'm trying to understand what's been posted so far to see if there is anything I can look for and contribute, It's just taking a while to understand all this.  I will do anything to help once I understand everything.


well shoot XD
all ya had to do was ask :3

anyways, there's alot of places you'd have to look to fully understand what's going on here...
my history with MDL0 files goes back a long way...

I'll try to make it as easy as possible though ;)
are you a good hexer or progger??

Eh....Na, not rly...sorry man...If you have some time though, do you think you could try teacing me some of this? I'd rly like to be SOME help lol

heh... I have quite alot of time :D
^when it comes to stuf like this :)

first off, you'll need Hex-Edit, and my current template once I fix a few bugs <_<
you can get HexEdit (trial free version) here:
[url]http://www.smashboards.com/showpost.php?p=11656041&postcount=2778[/url]

copy the template (when I post it), and paste it in:
C:\Documents and Settings\*user*\Application Data\ECSoftware\HexEdit\_mdl0.xml
and open an mdl0 file in HexEdit...

now, the template doesn't initiate automatically :/
when you open the mdl0,
go to 'view'-'template'-'split window'
and be sure to turn the auto sync on as well (looks like 3 red arrows "back, forth, back")

also, be sure to R-Click 'MDL0' and click 'Allow Editing'.
(it takes a while to load, but there's no errors with it this way)

EDIT:
I'll post my notes on the MDL0 format as well...
need to UD them right now :/


KK, thanx. I wont start right away, as i have WAY too many files on my computer and need to delete a whole crapload of stuff before i put any other programs on it, but sometime this weekend lol


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 07, 2011, 08:08:36 PM
KK good...
that gives me lots of time to edit any typo's out of this and comment out unused codes


Title: Re: About DAE to MDL0 Conversion
Post by: SmashClash on January 07, 2011, 09:55:51 PM
Meant to say: I support this 100%!
Can't wait for the .exe


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 08, 2011, 08:22:27 AM
Meant to say: I support this 100%!
Can't wait for the .exe


lol you mean PYW (for me) ^_0*

IDK how to compile exe's in Py >_>


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 08, 2011, 03:18:21 PM

hey guys... look at this:
http://www.models-resource.com/wii_gamecube/ssbm/

glad to know I'm not the only one with a use for the models other than hacking :3


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 08, 2011, 03:46:51 PM
I was looking at that, literally an hour ago.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 08, 2011, 04:18:55 PM
I was looking at that, literally an hour ago.

lol wut O.O
XDD


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on January 08, 2011, 04:33:45 PM
Yeah, I've known about it for a bit, too :D


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 08, 2011, 04:38:58 PM
you guys disappoint me about myself...
(http://i887.photobucket.com/albums/ac71/qwertyuiopasdfhjkl/i_am_dissapoint.jpg)
lol


Title: Re: About DAE to MDL0 Conversion
Post by: Tempo_ on January 08, 2011, 06:10:14 PM
I can't tell; is he smiling or frowning in the first panel?


Title: Re: About DAE to MDL0 Conversion
Post by: SSJCerious on January 08, 2011, 06:18:31 PM
I can't tell; is he smiling or frowning in the first panel?
Frown/Meh. He's in the middle of those two.


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 09, 2011, 10:56:20 AM
Yeah, I've known about it for a bit, too :D

Models resource has been round a while...If all the models werent in .obj format, i would have a ton of beta kingdom hearts characters in the vault lol....WAIT they have pokemon battle revolution models!!!!! DOES THT NEAN THERES A WAY


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 09, 2011, 11:33:49 AM
Back on topic, here's a little status update for you guys:

(http://w5ywrth4wrtj54wb54h4ewbrthbhhuqh3rubtho8uobh4uob5.webs.com/progress.jpg)

It doesn't look like much, but that's a lot of progress. The only problem is that there's still a bunch of stuff in the mdl0 that me and Tcll need to figure out. BUT WE'LL GET IT ;)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 09, 2011, 11:43:03 AM
Yeah, I've known about it for a bit, too :D

Models resource has been round a while...If all the models werent in .obj format, i would have a ton of beta kingdom hearts characters in the vault lol....WAIT they have pokemon battle revolution models!!!!! DOES THT NEAN THERES A WAY

:srs:
I knew about Models Resource...

I was surprised at the melee page...

and for PBR, ask Pharrox...
he got ninetails

btw, not ignoring you BJ ;)
just have nothing to say atm :P


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 09, 2011, 12:42:59 PM
Back on topic, here's a little status update for you guys:

([url]http://w5ywrth4wrtj54wb54h4ewbrthbhhuqh3rubtho8uobh4uob5.webs.com/progress.jpg[/url])

It doesn't look like much, but that's a lot of progress. The only problem is that there's still a bunch of stuff in the mdl0 that me and Tcll need to figure out. BUT WE'LL GET IT ;)


THT IS AWESOME GUYS!!!!!

Yeah, I've known about it for a bit, too :D


Models resource has been round a while...If all the models werent in .obj format, i would have a ton of beta kingdom hearts characters in the vault lol....WAIT they have pokemon battle revolution models!!!!! DOES THT NEAN THERES A WAY

:srs:
I knew about Models Resource...

I was surprised at the melee page...

and for PBR, ask Pharrox...
he got ninetails

btw, not ignoring you BJ ;)
just have nothing to say atm :P


Didnt he get it from pokepark?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 09, 2011, 12:48:26 PM
Didnt he get it from pokepark?

I rmbr him talking about PBR and ninetails...
it's on one of my old MDL0 threads...
here: http://www.smashboards.com/showthread.php?t=280525&page=3
around that page anyways...

>_> wow I was so lame back then XD


Title: Re: About DAE to MDL0 Conversion
Post by: SmashClash on January 10, 2011, 06:02:12 AM
Are we approximately 80% done?


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 10, 2011, 08:22:45 AM
Are we approximately 80% done?

Probably not yet, if you go to the link tcll posted, and read all the posts there, you'll c tht he also wants to impliment pac and pcs files in the converter. It does seem almost complete, but there's still a long ways to go. Am i correct Tcll?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 10, 2011, 11:07:25 AM
Are we approximately 80% done?

Probably not yet, if you go to the link tcll posted, and read all the posts there, you'll c tht he also wants to impliment pac and pcs files in the converter. It does seem almost complete, but there's still a long ways to go. Am i correct Tcll?

*cough cough* Remember I'm working a converter too? >_> You're waiting on TWO converters :)

I'd say I'm at 30%. Me and Tcll can't finish completely until EVERY part of the MDL0 file is figured out.


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 10, 2011, 11:52:15 AM
Are we approximately 80% done?

Probably not yet, if you go to the link tcll posted, and read all the posts there, you'll c tht he also wants to impliment pac and pcs files in the converter. It does seem almost complete, but there's still a long ways to go. Am i correct Tcll?

*cough cough* Remember I'm working a converter too? >_> You're waiting on TWO converters :)

I'd say I'm at 30%. Me and Tcll can't finish completely until EVERY part of the MDL0 file is figured out.

Yea, i heard you were making one too. What exactly is going to be different about yours BlackJax?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 10, 2011, 12:17:54 PM
Mine's a C# GUI program where you select the input format and output format and click convert. As of now, there's only DAE to MDL0 (How I got the name Dae 2 Smash).

Tcll's is in written Python and uses one main script and other scripts for each format. He converts the input to a universal format which he can then convert to the output format. Right now he's working on MDL0 to DAE (Perfect conversion, unlike AiS which doesn't convert bones, etc) so he can understand the MDL0 format fully.

Both will do the exact same thing though, hopefully without any glitches.


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 10, 2011, 12:46:50 PM
Mine's a C# GUI program where you select the input format and output format and click convert. As of now, there's only DAE to MDL0 (How I got the name Dae 2 Smash).

Tcll's is in written Python and uses one main script and other scripts for each format. He converts the input to a universal format which he can then convert to the output format. Right now he's working on MDL0 to DAE (Perfect conversion, unlike AiS which doesn't convert bones, etc) so he can understand the MDL0 format fully.

Both will do the exact same thing though, hopefully without any glitches.

Sweet! What exactly is the dae format from/for? and do you by any chance know if there's a beta for either one?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 10, 2011, 12:50:59 PM
Collada (Dae) is a format that you can export and import into 3ds max, and it supports everything a Brawl Model supports. It's not for anything specific, although I think some PS3 games use dae.

I'll probably release a beta version when I get it working just to see if anyone finds any glitches I can fix. But that won't be any time soon...


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 10, 2011, 01:02:59 PM
Collada (Dae) is a format that you can export and import into 3ds max, and it supports everything a Brawl Model supports. It's not for anything specific, although I think some PS3 games use dae.

I'll probably release a beta version when I get it working just to see if anyone finds any glitches I can fix. But that won't be any time soon...

Oh, but couldnt you just use 3ds max to open the dae and without changing it, save it as a 3ds file, then use das donkey vertex box to insert the .3ds into .mdl0?


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 10, 2011, 01:13:53 PM
That wouldn't work. DDVB only exports the verticies to a model that already exists, only the verticies are in different positions.


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 10, 2011, 01:21:41 PM
That wouldn't work. DDVB only exports the verticies to a model that already exists, only the verticies are in different positions.

so wld it not be easier just to use parts of the DDVB soure/code and work off of tht sence it already has some little parts of this done?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 10, 2011, 01:22:17 PM
 O_o
have we forgotten about skool...

this may take a moment to answer everything...

Are we approximately 80% done?

Probably not yet, if you go to the link tcll posted, and read all the posts there, you'll c tht he also wants to impliment pac and pcs files in the converter. It does seem almost complete, but there's still a long ways to go. Am i correct Tcll?

actually, that was for my blender idea which failed epically...
I'm no good at blender scripting... Python's easier... :P

Tcll's is in written Python and uses one main script and other scripts for each format. He converts the input to a universal format which he can then convert to the output format. Right now he's working on MDL0 to DAE (Perfect conversion, unlike AiS which doesn't convert bones, etc) so he can understand the MDL0 format fully.

Both will do the exact same thing though, hopefully without any glitches.


you've almost got mine ;)
you do get a GUI with mine, but it's not used really...

all it does is show you 2 dialog boxes (open, and save)...
it opens the selected format to convert and converts it to data used in 'global.tmp',
then saves the data converted from the tmp to the selected conversion format...

the plugins handle what files are imported/exported through the functions they contain...

and I think that's all that needed to be covered :/


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 10, 2011, 01:41:53 PM
O_o
have we forgotten about skool...

this may take a moment to answer everything...

Are we approximately 80% done?

Probably not yet, if you go to the link tcll posted, and read all the posts there, you'll c tht he also wants to impliment pac and pcs files in the converter. It does seem almost complete, but there's still a long ways to go. Am i correct Tcll?

actually, that was for my blender idea which failed epically...
I'm no good at blender scripting... Python's easier... :P

Tcll's is in written Python and uses one main script and other scripts for each format. He converts the input to a universal format which he can then convert to the output format. Right now he's working on MDL0 to DAE (Perfect conversion, unlike AiS which doesn't convert bones, etc) so he can understand the MDL0 format fully.

Both will do the exact same thing though, hopefully without any glitches.


you've almost got mine ;)
you do get a GUI with mine, but it's not used really...

all it does is show you 2 dialog boxes (open, and save)...
it opens the selected format to convert and converts it to data used in 'global.tmp',
then saves the data converted from the tmp to the selected conversion format...

the plugins handle what files are imported/exported through the functions they contain...

and I think that's all that needed to be covered :/

Oh, lol ok, i completely understand now, exept for my question about using part of DDVB's script/code/source.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 10, 2011, 01:49:27 PM
Oh, lol ok, i completely understand now, exept for my question about using part of DDVB's script/code/source.

*cough* DDVB sux...

anyways, I know what I was forgetting...

AIS converts everything, but not properly...
^and not all MDL0's (returns an error with some)

Will's only converts the model...
(I can't understand will's complicated method though) :/


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 10, 2011, 02:01:54 PM

AIS converts everything, but not properly...
^and not all MDL0's (returns an error with some)

Actually if you use all 3 of FW's model porting programs, it won't return an error. I figured that out when I tried to vertex hack a Bleach character model. Just sayin


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 10, 2011, 02:19:55 PM

AIS converts everything, but not properly...
^and not all MDL0's (returns an error with some)

Actually if you use all 3 of FW's model porting programs, it won't return an error. I figured that out when I tried to vertex hack a Bleach character model. Just sayin

hmm...
interesting...

how??

EDIT:
figured out =P


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 10, 2011, 02:48:42 PM

AIS converts everything, but not properly...
^and not all MDL0's (returns an error with some)

Actually if you use all 3 of FW's model porting programs, it won't return an error. I figured that out when I tried to vertex hack a Bleach character model. Just sayin

hmm...
interesting...

how??

EDIT:
figured out =P

so can't you work off AIS or something?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 10, 2011, 03:03:35 PM

AIS converts everything, but not properly...
^and not all MDL0's (returns an error with some)

Actually if you use all 3 of FW's model porting programs, it won't return an error. I figured that out when I tried to vertex hack a Bleach character model. Just sayin

hmm...
interesting...

how??

EDIT:
figured out =P

so can't you work off AIS or something?


well...
I kinda am... but not...

AIS's face-point conversion is messed up

Pachi's 'polygon2' object should have 54 tri's
with AIS, it only has 1


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 10, 2011, 03:05:01 PM

AIS converts everything, but not properly...
^and not all MDL0's (returns an error with some)

Actually if you use all 3 of FW's model porting programs, it won't return an error. I figured that out when I tried to vertex hack a Bleach character model. Just sayin

hmm...
interesting...

how??

EDIT:
figured out =P

so can't you work off AIS or something?


well...
I kinda am... but not...

AIS's face-point conversion is messed up

Pachi's 'polygon2' object should have 54 tri's
with AIS, it only has 1

oh.....how long do you think it'll take to get a working beta?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 10, 2011, 03:09:41 PM
oh.....how long do you think it'll take to get a working beta?

depends on how long it takes me to figure out the info :/

I need a face-point conversion method
a material and shader conversion method
texture references need to be figured out :/
(can look at AIS for that)
among a few other things...

also... it's possible this may accept non-brawl mdl0's as well...

I can't really do conversion to mdl0 until everything's been figured out...


Title: Re: About DAE to MDL0 Conversion
Post by: Camonsters on January 10, 2011, 07:40:27 PM
Are you guys able to use the coding from bb v0.64 since it has a working model exporter and semi working importer.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 10, 2011, 07:46:29 PM
Are you guys able to use the coding from bb v0.64 since it has a working model exporter and semi working importer.

that code is highly complicated... DX
but I could try :/


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 10, 2011, 07:51:28 PM
Are you guys able to use the coding from bb v0.64 since it has a working model exporter and semi working importer.

What Tcll said... I may code in C# but that code is insane O_o

I take that back, for some reason it all makes sense now. It'll help us understand the mdl0 a lot faster!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 11, 2011, 03:01:47 PM


KK, I've DL the 0.64 src...
I'll look into it later,

I have a brawl right now, and still need to finish my viewer :/


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on January 11, 2011, 08:02:20 PM
Have you started work on weighted vertices yet? Thats probably the subject with the least info atm.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 11, 2011, 08:26:52 PM
Imma start those after I get the mesh converted properly.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 11, 2011, 08:53:28 PM
Have you started work on weighted vertices yet? Thats probably the subject with the least info atm.

I know a little of how weights (VGroups) work


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 11, 2011, 10:30:23 PM
OK. Here's the plan. I'm going to *heavily* modify the unfinished Collada Importer in BrawlLib.dll and use it with my GUI.

If Kryal isn't ok with that... well I won't be able to release it :/ I'd have to take requests lol but I don't know why he wouldn't be ok with it as long as I give him credit for his work.

BrawlLib has tons of different classes that all rely on each other in the dll. Recreating all that code in a different format inside my program would take forever. Luckily I understand enough of it to use it


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on January 12, 2011, 03:02:09 AM
do eet.


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 12, 2011, 07:55:55 AM
do eet.

lol agreed XD. Good luck guys! Im counting on you!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 12, 2011, 11:01:18 AM

uugh...

my mother's causing problems reguarding something easy to fix...
but she (again) don't want to accept my way of thinking >:(

this is gonna slow me even more... >:(
dangit...


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 12, 2011, 11:10:35 AM

uugh...

my mother's causing problems reguarding something easy to fix...
but she (again) don't want to accept my way of thinking >:(

this is gonna slow me even more... >:(
dangit...

DAMN YOUR MOTHER!!!!! LOL JK. How much will this slow you down?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 12, 2011, 11:16:54 AM

uugh...

my mother's causing problems reguarding something easy to fix...
but she (again) don't want to accept my way of thinking >:(

this is gonna slow me even more... >:(
dangit...

DAMN YOUR MOTHER!!!!! LOL JK. How much will this slow you down?


depends on WTF she intends to do...

you can count on her and her obsession with taking away my cpu and all >:(


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 12, 2011, 11:20:43 AM

uugh...

my mother's causing problems reguarding something easy to fix...
but she (again) don't want to accept my way of thinking >:(

this is gonna slow me even more... >:(
dangit...

DAMN YOUR MOTHER!!!!! LOL JK. How much will this slow you down?


depends on WTF she intends to do...

you can count on her and her obsession with taking away my cpu and all >:(

tht sux lol........


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 12, 2011, 11:38:47 AM

uugh...

my mother's causing problems reguarding something easy to fix...
but she (again) don't want to accept my way of thinking >:(

this is gonna slow me even more... >:(
dangit...

DAMN YOUR MOTHER!!!!! LOL JK. How much will this slow you down?


depends on WTF she intends to do...

you can count on her and her obsession with taking away my cpu and all >:(

tht sux lol........

not lol D:>

my mother's an idiot...
she thinks she's making things better,
but she's only making them worse in the long run...

especially when it comes to my dreams of being my own company ;_;
that's never gonna happen around her... >_>


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 12, 2011, 11:40:13 AM

uugh...

my mother's causing problems reguarding something easy to fix...
but she (again) don't want to accept my way of thinking >:(

this is gonna slow me even more... >:(
dangit...

DAMN YOUR MOTHER!!!!! LOL JK. How much will this slow you down?


depends on WTF she intends to do...

you can count on her and her obsession with taking away my cpu and all >:(

tht sux lol........

not lol D:>

my mother's an idiot...
she thinks she's making things better,
but she's only making them worse in the long run...

especially when it comes to my dreams of being my own company ;_;
that's never gonna happen around her... >_>

Aww im sorry....can't you just explain to her that you are learning stuff so you can get a better job?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 12, 2011, 12:50:26 PM
Aww im sorry....can't you just explain to her that you are learning stuff so you can get a better job?

lol no XD

anyways...
she's found a way to do her thing now :P
so I'm good on my cpu :)
close call for me though >.>


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 12, 2011, 01:20:30 PM
Aww im sorry....can't you just explain to her that you are learning stuff so you can get a better job?

lol no XD

anyways...
she's found a way to do her thing now :P
so I'm good on my cpu :)
close call for me though >.>

well thtz good but also bad.....ma frend said hi.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 12, 2011, 01:21:52 PM
Aww im sorry....can't you just explain to her that you are learning stuff so you can get a better job?

lol no XD

anyways...
she's found a way to do her thing now :P
so I'm good on my cpu :)
close call for me though >.>

well thtz good but also bad.....ma frend said hi.


actually that's just good :)


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 12, 2011, 01:23:23 PM
Aww im sorry....can't you just explain to her that you are learning stuff so you can get a better job?

lol no XD

anyways...
she's found a way to do her thing now :P
so I'm good on my cpu :)
close call for me though >.>

well thtz good but also bad.....ma frend said hi.


actually that's just good :)

lol she just said ok fine dnt say hi jerk! lol


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 12, 2011, 01:31:06 PM
HOW DO I FIGURE OUT THESE FREAKIN FACE-POINTS!!!

how many times have I asked now >:(


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 12, 2011, 02:11:34 PM
I've counted once.


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on January 13, 2011, 02:44:00 AM
What do you mean face points?

EDIT: If you just mean the faces, look up some of RandomTBush's posts, he explained how faces can be converted.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 13, 2011, 07:50:20 AM
What do you mean face points?

EDIT: If you just mean the faces, look up some of RandomTBush's posts, he explained how faces can be converted.

wait, where, what O.o
this is news to me :D


btw, I was looking at brres files, and look at what I found:

72 6F 6F 74 00 00 00 58

00 00 00 28 00 00 00 01
FF FF 00 00 00 01 00 00 00 00 00 00 00 00 00 00
00 6D 00 00 00 00 00 01 00 00 08 AC 00 00 00 28

00 00 00 28 00 00 00 01
FF FF 00 00 00 01 00 00 00 00 00 00 00 00 00 00
00 66 00 00 00 00 00 01 00 00 08 98 00 00 00 40

00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

^isn't that similar to an mdl0 relocation table =:|


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on January 13, 2011, 08:28:34 AM
Quote from: RandomTBush
I exported the hat from the original SMD file to a DAE, converted the vertex, normal and UV mapping values to hex float (by using the 3DS export method used for vertex hacking), and put those all in the MDL0 file. THEN, I took DAE and put it through the Collada Refinery, with the "Tristripper" option so that the "triangle" values were condensed into tristrips (which are so much smaller than having thousands of values for the original triangles). These are the tristrip values for the Bill's hat:
Code:
<p>0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 186 189 202 187 190 203 197 200 213 198 201 214 240 243 256 241 244 257 223 226 239 225 228 241 224 227 240 226 229 242 312 320 332 226 229 242 313 321 333 243 246 259 60 322 334 248 251 264 251 254 267 249 252 265 250 253 266 256 259 272 257 260 273 264 267 280 265 268 281 169 172 185 139 142 155 170 173 186 140 143 156 167 170 183 168 171 184 166 169 182 179 182 195 151 154 167 158 161 174 148 151 164 146 149 162 147 150 163 145 148 161 153 156 169 154 157 170 297 304 317 296 303 316 135 138 151 133 136 149 134 137 150 131 134 147 126 128 141 124 125 138 125 127 140 41 126 139 125 127 140 42 130 143 125 127 140 128 131 144 232 235 248 233 236 249 11 11 11 234 237 250 10 10 10 215 218 231 213 216 229 214 217 230 216 219 232 217 220 233 236 239 252 237 240 253 194 197 210 195 198 211 185 188 201 196 199 212 186 189 202 196 199 212 197 200 213 239 242 255 240 243 256 221 224 237 223 226 239 222 225 238 224 227 240 310 317 330 224 227 240 311 318 331 312 320 332</p>
<p>6 6 6 7 7 7 8 8 8 0 0 0 182 185 198 183 186 199 192 195 208 193 196 209 235 238 251 236 239 252 235 238 251 216 219 232 235 238 251 213 216 229 235 238 251 10 10 10 192 195 208 191 194 207 182 185 198 190 193 206 180 183 196 188 191 204 181 184 197 189 192 205 282 285 298 281 284 297 151 154 167 280 283 296 303 310 323 245 248 261 301 308 321 299 306 319 300 307 320 298 305 318 152 155 168 153 156 169 152 155 168 147 150 163 150 153 166 148 151 164 150 153 166 151 154 167 149 152 165 302 309 322 300 307 320 302 309 322 301 308 321 302 309 322 303 310 323 151 154 167</p>
<p>7 7 7 1 1 1 0 0 0</p>
<p>9 9 9 10 10 10 9 9 9 11 11 11 230 233 246 231 234 247 127 129 142 125 127 140 127 129 142 126 128 141 129 132 145 134 137 150 293 300 313 135 138 151 292 299 312 297 304 317 298 305 318 153 156 169</p>
<p>12 12 12 13 13 13 14 14 14 41 41 41 14 14 14 42 42 42 14 14 14 43 43 43 14 14 14 44 44 44 12 12 12 45 45 45 12 12 12 46 46 46 15 15 15 47 47 47 17 17 17 48 48 48 19 19 19 49 49 49 21 21 21 50 50 50 23 23 23 51 51 51 23 23 23 52 52 52 24 24 24 53 53 53 32 32 32 54 54 54 30 30 30 55 55 55 28 28 28 56 56 56 27 27 27 57 57 57 27 27 27 58 58 58 25 25 25 59 59 59 25 25 25 60 60 60 25 25 25 61 61 61 26 26 26 62 62 62 29 29 29 63 63 63 31 31 31 35 35 35 33 33 33 34 34 34 22 22 22 36 36 36 22 22 22 37 37 37 20 20 20 38 38 38 18 18 18 39 39 39 16 16 16 40 40 40 13 13 13 40 40 40 41 41 41</p>
<p>12 12 12 15 15 15 13 13 13 15 15 15 16 16 16 17 17 17 18 18 18 19 19 19 20 20 20 21 21 21 22 22 22 23 23 23 22 22 22 24 24 24 33 33 33 32 32 32 31 31 31 30 30 30 29 29 29 28 28 28 26 26 26 27 27 27 25 25 25</p>
<p>64 64 64 65 65 65 66 66 66 67 67 67 70 70 70 68 68 68 69 69 69 71 71 71 72 72 72 88 88 88 112 112 113 89 89 89 111 111 112 87 87 87 110 110 111 86 86 86 109 109 110 108 108 109 114 114 127 108 108 109 45 45 126 108 108 109 46 46 125 107 107 108 47 47 124 106 106 107 48 48 123 105 105 106 49 49 122 104 104 105 50 50 121 103 103 104 51 51 120 102 102 103 52 52 119 77 77 77 53 53 118 74 74 74 54 54 117 73 73 73 55 55 116 101 101 102 56 56 115 100 100 101 57 57 99 99 99 100 97 97 97 92 92 92 96 96 96 65 65 65 95 95 95 64 64 64 93 93 93 113 113 114 122 122 135 113 113 114 121 121 134 70 70 70 120 120 133 69 69 69 119 119 132 72 72 72 118 118 131 112 112 113 117 117 130 111 111 112 116 116 129 110 110 111 115 115 128 109 109 110 115 115 128 114 114 127</p>
<p>73 73 73 74 74 74 75 75 75 76 76 76 65 65 65 78 78 78 79 79 79 77 77 77 79 79 79 102 102 103 80 80 80 103 103 104 81 81 81 104 104 105 82 82 82 105 105 106 83 83 83 106 106 107 84 84 84 107 107 108 85 85 85 108 108 109 85 85 85 86 86 86 65 65 65 87 87 87 65 65 65 89 89 89 65 65 65 88 88 88 65 65 65 71 71 71 65 65 65 68 68 68 67 67 67</p>
<p>74 74 74 77 77 77 76 76 76 78 78 78</p>
<p>65 65 65 79 79 79 65 65 65 80 80 80 65 65 65 81 81 81 65 65 65 82 82 82 65 65 65 83 83 83 65 65 65 84 84 84 85 85 85</p>
<p>90 90 90 65 65 65 91 91 91 92 92 92 100 100 101 99 99 100</p>
<p>93 93 93 94 94 94 95 95 95 94 94 94 96 96 96 94 94 94 97 97 97 98 98 98 57 57 99</p>
<p>100 100 101 101 101 102 91 91 91 101 101 102 90 90 90 73 73 73 90 90 90 75 75 75 65 65 65</p>
<p>70 70 70 113 113 114 66 66 66 64 64 64</p>
<p>122 122 135 123 123 136 93 93 93 123 123 136 94 94 94 123 123 136 98 98 98</p>
<p>40 124 137 124 125 138 40 124 137 41 126 139</p>
<p>130 133 146 131 134 147 132 135 148 124 125 138 132 135 148 40 124 137 132 135 148 39 297 310 291 298 311 290 295 308 130 133 146 294 301 314 295 302 315 137 140 153 136 139 152 138 141 154 144 147 160 142 145 158 143 146 159 156 159 172 157 160 173 177 180 193 178 181 194 171 174 187 168 171 184 171 174 187 140 143 156 141 144 157 139 142 155 266 269 282 265 268 281 258 261 274 257 260 273 253 256 269 250 253 266 252 255 268 251 254 267 61 327 339 60 322 334</p>
<p>130 133 146 133 136 149 131 134 147</p>
<p>143 146 159 145 148 161 144 147 160 154 157 170 136 139 152 296 303 316 295 302 315 133 136 149 130 133 146</p>
<p>143 146 159 146 149 162 145 148 161</p>
<p>149 152 165 152 155 168 150 153 166</p>
<p>138 141 154 155 158 171 142 145 158 155 158 171 156 159 172 176 179 192 177 180 193 172 175 188 171 174 187 172 175 188 141 144 157 267 270 283 266 269 282 267 270 283 258 261 274 259 262 275 253 256 269 260 263 276 254 257 270 261 264 277 63 325 337 261 264 277 35 324 336 261 264 277 34 323 335 271 274 287 36 292 305 279 282 295 289 293 306 173 176 189 294 301 314 173 176 189 137 140 153 174 177 190 138 141 154 175 178 191 155 158 171 175 178 191 176 179 192 276 279 292 172 175 188 268 271 284 267 270 283 268 271 284 259 262 275 269 272 285 260 263 276 270 273 286 261 264 277 270 273 286 271 274 287 278 281 294 279 282 295 278 281 294 173 176 189 278 281 294 174 177 190 277 280 293 175 178 191 277 280 293 276 279 292 269 272 285 268 271 284</p>
<p>157 160 173 146 149 162 143 146 159</p>
<p>157 160 173 158 161 174 146 149 162</p>
<p>159 162 175 151 154 167 160 163 176 161 164 177 205 208 221 206 209 222 204 207 220 207 210 223 275 278 291 169 172 185 275 278 291 264 267 280 263 266 279 256 259 272 255 258 271 249 252 265 247 250 263 248 251 264 247 250 263 243 246 259 242 245 258 226 229 242 242 245 258 225 228 241 242 245 258 241 244 257 246 249 262 198 201 214 262 265 278 273 276 289 272 275 288 212 215 228 203 206 219 200 203 216 202 205 218 199 202 215 159 162 175 199 202 215 151 154 167 201 204 217 210 213 226 211 214 227 287 290 303 288 291 304 5 5 5 288 291 304 187 190 203 273 276 289 198 201 214</p>
<p>151 154 167 162 165 178 161 164 177 162 165 178 206 209 222 208 211 224 207 210 223 209 212 225 169 172 185 209 212 225 170 173 186 164 167 180 167 170 183 163 166 179 165 168 181 151 154 167 165 168 181 166 169 182 167 170 183</p>
<p>151 154 167 163 166 179 162 165 178 164 167 180 208 211 224 209 212 225</p>
<p>178 181 194 158 161 174 157 160 173</p>
<p>178 181 194 179 182 195 158 161 174</p>
<p>6 6 6 180 183 196 6 6 6 181 184 197 283 286 299 282 285 298 283 286 299 151 154 167 284 287 300 285 288 301 7 7 7 285 288 301 1 1 1 286 289 302 3 3 3 287 290 303 5 5 5</p>
<p>6 6 6 8 8 8 180 183 196 182 185 198</p>
<p>0 0 0 2 2 2 183 186 199 184 187 200 193 196 209 194 197 210 236 239 252</p>
<p>2 2 2 185 188 201 184 187 200 194 197 210</p>
<p>2 2 2 4 4 4 185 188 201 186 189 202</p>
<p>199 202 215 200 203 216 201 204 217 200 203 216 211 214 227 212 215 228 288 291 304 273 276 289</p>
<p>202 205 218 204 207 220 203 206 219 274 277 290 272 275 288 274 277 290 262 265 278 263 266 279 262 265 278 255 258 271 246 249 262 247 250 263 242 245 258</p>
<p>202 205 218 205 208 221 204 207 220</p>
<p>205 208 221 202 205 218 160 163 176 159 162 175</p>
<p>217 220 233 218 221 234 214 217 230 307 314 327 214 217 230 306 313 326 215 218 231 305 312 325 234 237 250 304 311 324 233 236 249 304 311 324 128 131 144</p>
<p>217 220 233 219 222 235 218 221 234 220 223 236 308 315 328 220 223 236 309 316 329 222 225 238 309 316 329 310 317 330</p>
<p>219 222 235 221 224 237 220 223 236 222 225 238</p>
<p>227 230 243 228 231 244 229 232 245 293 300 313 229 232 245 292 299 312 244 247 260 299 306 319 244 247 260 245 248 261 189 192 205 245 248 261 281 284 297 280 283 296</p>
<p>227 230 243 9 9 9 228 231 244 230 233 246 129 132 145 127 129 142</p>
<p>11 11 11 232 235 248 231 234 247 125 127 140</p>
<p>237 240 253 238 241 254 217 220 233 238 241 254 219 222 235 239 242 255 221 224 237</p>
<p>189 192 205 188 191 204 244 247 260 188 191 204 229 232 245 188 191 204 227 230 243 190 193 206 9 9 9 191 194 207 10 10 10</p>
<p>195 198 211 238 241 254 237 240 253</p>
<p>195 198 211 196 199 212 238 241 254 239 242 255</p>
<p>253 256 269 254 257 270 252 255 268 62 326 338 61 327 339</p>
<p>274 277 290 275 278 291 263 266 279</p>
<p>277 280 293 270 273 286 269 272 285</p>
<p>277 280 293 278 281 294 270 273 286</p>
<p>151 154 167 286 289 302 285 288 301</p>
<p>151 154 167 210 213 226 286 289 302 287 290 303</p>
<p>204 207 220 275 278 291 274 277 290</p>
<p>179 182 195 178 181 194 168 171 184</p>
<p>36 292 305 289 293 306 37 294 307 290 295 308 38 296 309 39 297 310</p>
<p>130 133 146 132 135 148 291 298 311</p>
<p>289 293 306 294 301 314 290 295 308</p>
<p>298 305 318 299 306 319 292 299 312</p>
<p>228 231 244 129 132 145 293 300 313</p>
<p>218 221 234 308 315 328 307 314 327</p>
<p>7 7 7 6 6 6 284 287 300 283 286 299</p>
<p>300 307 320 152 155 168 149 152 165</p>
<p>63 325 337 62 326 338 254 257 270</p>
<p>45 45 340 44 44 341 114 114 342 314 328 344 115 115 345 323 345 363 324 346 364 315 330 347 317 333 350 305 332 349 317 333 350 306 334 351 318 335 352 307 336 353 319 337 354 308 338 355 319 337 354 309 339 356 320 340 357 310 341 358 321 342 359 311 319 360 331 353 371 312 354 372 334 358 381 313 357 380 333 356 377 60 60 379 333 356 377 59 59 378 333 356 377 58 58 376 332 355 374 57 57 375 332 355 374 98 98 373 335 359 383 123 123 382 330 352 370 122 122 391 329 351 369 121 121 390 328 350 368 120 120 389 327 349 367 119 119 388 327 349 367 118 118 387 326 348 366 117 117 386 325 347 365 116 116 385 324 346 364 116 116 385 115 115 345</p>
<p>43 43 343 314 328 344 43 43 343 44 44 341</p>
<p>304 329 346 315 330 347 316 331 348 323 345 363 322 343 361 314 328 344 322 343 361 43 43 343 128 344 362 42 42 384</p>
<p>304 329 346 305 332 349 315 330 347</p>
<p>304 329 346 322 343 361 304 329 346 128 344 362</p>
<p>304 329 346 316 331 348 322 343 361</p>
<p>317 333 350 325 347 365 324 346 364</p>
<p>317 333 350 318 335 352 325 347 365 318 335 352 326 348 366 319 337 354 327 349 367 319 337 354 328 350 368 320 340 357 329 351 369 321 342 359 330 352 370 331 353 371 335 359 383 334 358 381 332 355 374 333 356 377</p>

The reason I had asked for a batch hex converter a while back was so that I could convert all those values to hex. Every tristrip has a minimum of 3 values -- the first one links to the vertex point, the second is for normals, and the third is for UV mapping, and the amount of values was always a multiple of 3 because of that. Every chunk of values in between the <p> and </p> tags was for a different tristrip, so I put a "9800FF" before each and every one of those. Then, I counted the number of values between those tags and divided by 3, then changed the "FF" at the end of the "9800FF" I put in to that value (in hex) then stuck it into the model file under the Polygons section when I was done. Finally, after injecting the new values, I had to re-link every single node in the MDL0 file. I still believe that my earlier attempt had at least one incorrectly linked offset. If even a single offset in the MDL0 is off, the whole thing breaks (which is why I had so much trouble getting it working by rebuilding Jigglypuff's entire model -- using the sleep hat gave me so much less that I had to worry about re-linking).

Im pretty sure that explains the tristrips.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 13, 2011, 01:04:11 PM
Quote from: RandomTBush
I exported the hat from the original SMD file to a DAE, converted the vertex, normal and UV mapping values to hex float (by using the 3DS export method used for vertex hacking), and put those all in the MDL0 file. THEN, I took DAE and put it through the Collada Refinery, with the "Tristripper" option so that the "triangle" values were condensed into tristrips (which are so much smaller than having thousands of values for the original triangles). These are the tristrip values for the Bill's hat:
Code:
<p>0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 186 189 202 187 190 203 197 200 213 198 201 214 240 243 256 241 244 257 223 226 239 225 228 241 224 227 240 226 229 242 312 320 332 226 229 242 313 321 333 243 246 259 60 322 334 248 251 264 251 254 267 249 252 265 250 253 266 256 259 272 257 260 273 264 267 280 265 268 281 169 172 185 139 142 155 170 173 186 140 143 156 167 170 183 168 171 184 166 169 182 179 182 195 151 154 167 158 161 174 148 151 164 146 149 162 147 150 163 145 148 161 153 156 169 154 157 170 297 304 317 296 303 316 135 138 151 133 136 149 134 137 150 131 134 147 126 128 141 124 125 138 125 127 140 41 126 139 125 127 140 42 130 143 125 127 140 128 131 144 232 235 248 233 236 249 11 11 11 234 237 250 10 10 10 215 218 231 213 216 229 214 217 230 216 219 232 217 220 233 236 239 252 237 240 253 194 197 210 195 198 211 185 188 201 196 199 212 186 189 202 196 199 212 197 200 213 239 242 255 240 243 256 221 224 237 223 226 239 222 225 238 224 227 240 310 317 330 224 227 240 311 318 331 312 320 332</p>
<p>6 6 6 7 7 7 8 8 8 0 0 0 182 185 198 183 186 199 192 195 208 193 196 209 235 238 251 236 239 252 235 238 251 216 219 232 235 238 251 213 216 229 235 238 251 10 10 10 192 195 208 191 194 207 182 185 198 190 193 206 180 183 196 188 191 204 181 184 197 189 192 205 282 285 298 281 284 297 151 154 167 280 283 296 303 310 323 245 248 261 301 308 321 299 306 319 300 307 320 298 305 318 152 155 168 153 156 169 152 155 168 147 150 163 150 153 166 148 151 164 150 153 166 151 154 167 149 152 165 302 309 322 300 307 320 302 309 322 301 308 321 302 309 322 303 310 323 151 154 167</p>
<p>7 7 7 1 1 1 0 0 0</p>
<p>9 9 9 10 10 10 9 9 9 11 11 11 230 233 246 231 234 247 127 129 142 125 127 140 127 129 142 126 128 141 129 132 145 134 137 150 293 300 313 135 138 151 292 299 312 297 304 317 298 305 318 153 156 169</p>
<p>12 12 12 13 13 13 14 14 14 41 41 41 14 14 14 42 42 42 14 14 14 43 43 43 14 14 14 44 44 44 12 12 12 45 45 45 12 12 12 46 46 46 15 15 15 47 47 47 17 17 17 48 48 48 19 19 19 49 49 49 21 21 21 50 50 50 23 23 23 51 51 51 23 23 23 52 52 52 24 24 24 53 53 53 32 32 32 54 54 54 30 30 30 55 55 55 28 28 28 56 56 56 27 27 27 57 57 57 27 27 27 58 58 58 25 25 25 59 59 59 25 25 25 60 60 60 25 25 25 61 61 61 26 26 26 62 62 62 29 29 29 63 63 63 31 31 31 35 35 35 33 33 33 34 34 34 22 22 22 36 36 36 22 22 22 37 37 37 20 20 20 38 38 38 18 18 18 39 39 39 16 16 16 40 40 40 13 13 13 40 40 40 41 41 41</p>
<p>12 12 12 15 15 15 13 13 13 15 15 15 16 16 16 17 17 17 18 18 18 19 19 19 20 20 20 21 21 21 22 22 22 23 23 23 22 22 22 24 24 24 33 33 33 32 32 32 31 31 31 30 30 30 29 29 29 28 28 28 26 26 26 27 27 27 25 25 25</p>
<p>64 64 64 65 65 65 66 66 66 67 67 67 70 70 70 68 68 68 69 69 69 71 71 71 72 72 72 88 88 88 112 112 113 89 89 89 111 111 112 87 87 87 110 110 111 86 86 86 109 109 110 108 108 109 114 114 127 108 108 109 45 45 126 108 108 109 46 46 125 107 107 108 47 47 124 106 106 107 48 48 123 105 105 106 49 49 122 104 104 105 50 50 121 103 103 104 51 51 120 102 102 103 52 52 119 77 77 77 53 53 118 74 74 74 54 54 117 73 73 73 55 55 116 101 101 102 56 56 115 100 100 101 57 57 99 99 99 100 97 97 97 92 92 92 96 96 96 65 65 65 95 95 95 64 64 64 93 93 93 113 113 114 122 122 135 113 113 114 121 121 134 70 70 70 120 120 133 69 69 69 119 119 132 72 72 72 118 118 131 112 112 113 117 117 130 111 111 112 116 116 129 110 110 111 115 115 128 109 109 110 115 115 128 114 114 127</p>
<p>73 73 73 74 74 74 75 75 75 76 76 76 65 65 65 78 78 78 79 79 79 77 77 77 79 79 79 102 102 103 80 80 80 103 103 104 81 81 81 104 104 105 82 82 82 105 105 106 83 83 83 106 106 107 84 84 84 107 107 108 85 85 85 108 108 109 85 85 85 86 86 86 65 65 65 87 87 87 65 65 65 89 89 89 65 65 65 88 88 88 65 65 65 71 71 71 65 65 65 68 68 68 67 67 67</p>
<p>74 74 74 77 77 77 76 76 76 78 78 78</p>
<p>65 65 65 79 79 79 65 65 65 80 80 80 65 65 65 81 81 81 65 65 65 82 82 82 65 65 65 83 83 83 65 65 65 84 84 84 85 85 85</p>
<p>90 90 90 65 65 65 91 91 91 92 92 92 100 100 101 99 99 100</p>
<p>93 93 93 94 94 94 95 95 95 94 94 94 96 96 96 94 94 94 97 97 97 98 98 98 57 57 99</p>
<p>100 100 101 101 101 102 91 91 91 101 101 102 90 90 90 73 73 73 90 90 90 75 75 75 65 65 65</p>
<p>70 70 70 113 113 114 66 66 66 64 64 64</p>
<p>122 122 135 123 123 136 93 93 93 123 123 136 94 94 94 123 123 136 98 98 98</p>
<p>40 124 137 124 125 138 40 124 137 41 126 139</p>
<p>130 133 146 131 134 147 132 135 148 124 125 138 132 135 148 40 124 137 132 135 148 39 297 310 291 298 311 290 295 308 130 133 146 294 301 314 295 302 315 137 140 153 136 139 152 138 141 154 144 147 160 142 145 158 143 146 159 156 159 172 157 160 173 177 180 193 178 181 194 171 174 187 168 171 184 171 174 187 140 143 156 141 144 157 139 142 155 266 269 282 265 268 281 258 261 274 257 260 273 253 256 269 250 253 266 252 255 268 251 254 267 61 327 339 60 322 334</p>
<p>130 133 146 133 136 149 131 134 147</p>
<p>143 146 159 145 148 161 144 147 160 154 157 170 136 139 152 296 303 316 295 302 315 133 136 149 130 133 146</p>
<p>143 146 159 146 149 162 145 148 161</p>
<p>149 152 165 152 155 168 150 153 166</p>
<p>138 141 154 155 158 171 142 145 158 155 158 171 156 159 172 176 179 192 177 180 193 172 175 188 171 174 187 172 175 188 141 144 157 267 270 283 266 269 282 267 270 283 258 261 274 259 262 275 253 256 269 260 263 276 254 257 270 261 264 277 63 325 337 261 264 277 35 324 336 261 264 277 34 323 335 271 274 287 36 292 305 279 282 295 289 293 306 173 176 189 294 301 314 173 176 189 137 140 153 174 177 190 138 141 154 175 178 191 155 158 171 175 178 191 176 179 192 276 279 292 172 175 188 268 271 284 267 270 283 268 271 284 259 262 275 269 272 285 260 263 276 270 273 286 261 264 277 270 273 286 271 274 287 278 281 294 279 282 295 278 281 294 173 176 189 278 281 294 174 177 190 277 280 293 175 178 191 277 280 293 276 279 292 269 272 285 268 271 284</p>
<p>157 160 173 146 149 162 143 146 159</p>
<p>157 160 173 158 161 174 146 149 162</p>
<p>159 162 175 151 154 167 160 163 176 161 164 177 205 208 221 206 209 222 204 207 220 207 210 223 275 278 291 169 172 185 275 278 291 264 267 280 263 266 279 256 259 272 255 258 271 249 252 265 247 250 263 248 251 264 247 250 263 243 246 259 242 245 258 226 229 242 242 245 258 225 228 241 242 245 258 241 244 257 246 249 262 198 201 214 262 265 278 273 276 289 272 275 288 212 215 228 203 206 219 200 203 216 202 205 218 199 202 215 159 162 175 199 202 215 151 154 167 201 204 217 210 213 226 211 214 227 287 290 303 288 291 304 5 5 5 288 291 304 187 190 203 273 276 289 198 201 214</p>
<p>151 154 167 162 165 178 161 164 177 162 165 178 206 209 222 208 211 224 207 210 223 209 212 225 169 172 185 209 212 225 170 173 186 164 167 180 167 170 183 163 166 179 165 168 181 151 154 167 165 168 181 166 169 182 167 170 183</p>
<p>151 154 167 163 166 179 162 165 178 164 167 180 208 211 224 209 212 225</p>
<p>178 181 194 158 161 174 157 160 173</p>
<p>178 181 194 179 182 195 158 161 174</p>
<p>6 6 6 180 183 196 6 6 6 181 184 197 283 286 299 282 285 298 283 286 299 151 154 167 284 287 300 285 288 301 7 7 7 285 288 301 1 1 1 286 289 302 3 3 3 287 290 303 5 5 5</p>
<p>6 6 6 8 8 8 180 183 196 182 185 198</p>
<p>0 0 0 2 2 2 183 186 199 184 187 200 193 196 209 194 197 210 236 239 252</p>
<p>2 2 2 185 188 201 184 187 200 194 197 210</p>
<p>2 2 2 4 4 4 185 188 201 186 189 202</p>
<p>199 202 215 200 203 216 201 204 217 200 203 216 211 214 227 212 215 228 288 291 304 273 276 289</p>
<p>202 205 218 204 207 220 203 206 219 274 277 290 272 275 288 274 277 290 262 265 278 263 266 279 262 265 278 255 258 271 246 249 262 247 250 263 242 245 258</p>
<p>202 205 218 205 208 221 204 207 220</p>
<p>205 208 221 202 205 218 160 163 176 159 162 175</p>
<p>217 220 233 218 221 234 214 217 230 307 314 327 214 217 230 306 313 326 215 218 231 305 312 325 234 237 250 304 311 324 233 236 249 304 311 324 128 131 144</p>
<p>217 220 233 219 222 235 218 221 234 220 223 236 308 315 328 220 223 236 309 316 329 222 225 238 309 316 329 310 317 330</p>
<p>219 222 235 221 224 237 220 223 236 222 225 238</p>
<p>227 230 243 228 231 244 229 232 245 293 300 313 229 232 245 292 299 312 244 247 260 299 306 319 244 247 260 245 248 261 189 192 205 245 248 261 281 284 297 280 283 296</p>
<p>227 230 243 9 9 9 228 231 244 230 233 246 129 132 145 127 129 142</p>
<p>11 11 11 232 235 248 231 234 247 125 127 140</p>
<p>237 240 253 238 241 254 217 220 233 238 241 254 219 222 235 239 242 255 221 224 237</p>
<p>189 192 205 188 191 204 244 247 260 188 191 204 229 232 245 188 191 204 227 230 243 190 193 206 9 9 9 191 194 207 10 10 10</p>
<p>195 198 211 238 241 254 237 240 253</p>
<p>195 198 211 196 199 212 238 241 254 239 242 255</p>
<p>253 256 269 254 257 270 252 255 268 62 326 338 61 327 339</p>
<p>274 277 290 275 278 291 263 266 279</p>
<p>277 280 293 270 273 286 269 272 285</p>
<p>277 280 293 278 281 294 270 273 286</p>
<p>151 154 167 286 289 302 285 288 301</p>
<p>151 154 167 210 213 226 286 289 302 287 290 303</p>
<p>204 207 220 275 278 291 274 277 290</p>
<p>179 182 195 178 181 194 168 171 184</p>
<p>36 292 305 289 293 306 37 294 307 290 295 308 38 296 309 39 297 310</p>
<p>130 133 146 132 135 148 291 298 311</p>
<p>289 293 306 294 301 314 290 295 308</p>
<p>298 305 318 299 306 319 292 299 312</p>
<p>228 231 244 129 132 145 293 300 313</p>
<p>218 221 234 308 315 328 307 314 327</p>
<p>7 7 7 6 6 6 284 287 300 283 286 299</p>
<p>300 307 320 152 155 168 149 152 165</p>
<p>63 325 337 62 326 338 254 257 270</p>
<p>45 45 340 44 44 341 114 114 342 314 328 344 115 115 345 323 345 363 324 346 364 315 330 347 317 333 350 305 332 349 317 333 350 306 334 351 318 335 352 307 336 353 319 337 354 308 338 355 319 337 354 309 339 356 320 340 357 310 341 358 321 342 359 311 319 360 331 353 371 312 354 372 334 358 381 313 357 380 333 356 377 60 60 379 333 356 377 59 59 378 333 356 377 58 58 376 332 355 374 57 57 375 332 355 374 98 98 373 335 359 383 123 123 382 330 352 370 122 122 391 329 351 369 121 121 390 328 350 368 120 120 389 327 349 367 119 119 388 327 349 367 118 118 387 326 348 366 117 117 386 325 347 365 116 116 385 324 346 364 116 116 385 115 115 345</p>
<p>43 43 343 314 328 344 43 43 343 44 44 341</p>
<p>304 329 346 315 330 347 316 331 348 323 345 363 322 343 361 314 328 344 322 343 361 43 43 343 128 344 362 42 42 384</p>
<p>304 329 346 305 332 349 315 330 347</p>
<p>304 329 346 322 343 361 304 329 346 128 344 362</p>
<p>304 329 346 316 331 348 322 343 361</p>
<p>317 333 350 325 347 365 324 346 364</p>
<p>317 333 350 318 335 352 325 347 365 318 335 352 326 348 366 319 337 354 327 349 367 319 337 354 328 350 368 320 340 357 329 351 369 321 342 359 330 352 370 331 353 371 335 359 383 334 358 381 332 355 374 333 356 377</p>

The reason I had asked for a batch hex converter a while back was so that I could convert all those values to hex. Every tristrip has a minimum of 3 values -- the first one links to the vertex point, the second is for normals, and the third is for UV mapping, and the amount of values was always a multiple of 3 because of that. Every chunk of values in between the <p> and </p> tags was for a different tristrip, so I put a "9800FF" before each and every one of those. Then, I counted the number of values between those tags and divided by 3, then changed the "FF" at the end of the "9800FF" I put in to that value (in hex) then stuck it into the model file under the Polygons section when I was done. Finally, after injecting the new values, I had to re-link every single node in the MDL0 file. I still believe that my earlier attempt had at least one incorrectly linked offset. If even a single offset in the MDL0 is off, the whole thing breaks (which is why I had so much trouble getting it working by rebuilding Jigglypuff's entire model -- using the sleep hat gave me so much less that I had to worry about re-linking).

Im pretty sure that explains the tristrips.

KK...
this may help explain things in that area even more:
*decided not to post emutalk link* =P

I already know all the primitive types and how they work...
I'm talking about how to figure out the points of say, the tristrip...
each index value goes toward a vert/normal/uv (v/n/u)

but some points arn't alwats in v/n/u format...
some may only be v/n (depending on the object)

it's the face-point format (which I should've mentioned before) that I'm trying to figure out...
that's what I need help on...
that's where I'm lost :/

however...
it seems the face-point indexes themselves also have a certain way of being written:

compair this point:
0F 2D 01 E6 01 DD 01 4F
to this point:
06 24 04 74 04 4B 00 00 C3
or this point:
4B 22 00 4B

and actually, there's a weight index in there as well :/

so how do you find out the data arrangment of the points??

if I could understand will's method, or could find pharrox's method,
I'd prbly have it figured out by now :/


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 13, 2011, 01:12:24 PM

here's another thing...
my universal format for my converter:
Quote
< vertices name X,Y,Z/X,Y,Z >
< normals name X,Y,Z/X,Y,Z >
< uvs name X,Y,Z/X,Y,Z >

< faces name points lines line_strips tri's tri_strips tri_fans quads >
points: v,n,u/v,n,u
lines: v,n,u|v,n,u/v,n,u|v,n,u
line_strips: v,n,u|v,n,u|v,n,u|v,n,u|v,n,u/
tri's: v,n,u|v,n,u|v,n,u/v,n,u|v,n,u|v,n,u
tri_strips: v,n,u|v,n,u|v,n,u|v,n,u|v,n,u|v,n,u/
tri_fans: v,n,u|v,n,u|v,n,u|v,n,u|v,n,u|v,n,u|v,n,u/
quads: v,n,u|v,n,u|v,n,u|v,n,u/v,n,u|v,n,u|v,n,u|v,n,u

< bone bone_name parent_bone child_index(int) is_connected(bool) locX,Y,Z rotX,Y,Z scaX,Y,Z >
if bone has no parent: < bone 001 _none 0 0 locX,Y,Z rotX,Y,Z scaX,Y,Z >

< object name parent verts,normals,uv's,faces bones > ;unfinished

< material name > ;unfinished

as you can see, there's quite alot of work to do on it

I need to add a format spec to the face portion:
1: v
2: vn
3: vnu

but yea...
I'll work on the rest of the format as I import other parts...

<weights ...>
<library ...>
<shader ...>
are all in mind ;)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 13, 2011, 04:04:11 PM

hey...
you got anything on the brres format??

who knows...
I may be able to figure out the unks in the mdl0 relocation table :/

(I've posted a copy in the other thread)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 13, 2011, 04:06:25 PM
TRIPLE POST!!! :af:

but hey check this out :3
http://www.spriters-resource.com/community/showthread.php?tid=15384


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 13, 2011, 04:41:40 PM
I've had that viewer for a while now, there was a thread about it
and idk anything about brres files


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 13, 2011, 05:06:02 PM
I've had that viewer for a while now, there was a thread about it
and idk anything about brres files

I didn't post that about the viewer =P
I posted about the info :P


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 13, 2011, 05:32:27 PM

I didn't post that about the viewer =P
I posted about the info :P

I don't see any info lol


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 13, 2011, 05:53:43 PM

I didn't post that about the viewer =P
I posted about the info :P

I don't see any info lol


oh... woops *looks at failure*
I ment it was because RTB was there...

IDK what made me post it, but I did :P
I don't even truly know why I posted that =P
dang my stupid mind and it's sometimes un-intelligent ways...


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 14, 2011, 01:22:31 PM
Hey, tcll, check this out. i was digging around google for some info.....and well, stumbled across this juicy tidbit. Idk if it will help or not but here.....

http://hardcorebrawlhacks.wordpress.com/2010/08/30/mdl0-vert-export-script-is-avaliable/


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 14, 2011, 01:26:49 PM
Hey, tcll, check this out. i was digging around google for some info.....and well, stumbled across this juicy tidbit. Idk if it will help or not but here.....

[url]http://hardcorebrawlhacks.wordpress.com/2010/08/30/mdl0-vert-export-script-is-avaliable/[/url]

lol I wrote that post =P


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 14, 2011, 01:28:17 PM
Hey, tcll, check this out. i was digging around google for some info.....and well, stumbled across this juicy tidbit. Idk if it will help or not but here.....

[url]http://hardcorebrawlhacks.wordpress.com/2010/08/30/mdl0-vert-export-script-is-avaliable/[/url]

lol I wrote that post =P


oh.....well thnx for makin me feel stupid.....lol.....jk


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 14, 2011, 01:37:44 PM
Hey, tcll, check this out. i was digging around google for some info.....and well, stumbled across this juicy tidbit. Idk if it will help or not but here.....

[url]http://hardcorebrawlhacks.wordpress.com/2010/08/30/mdl0-vert-export-script-is-avaliable/[/url]

lol I wrote that post =P


oh.....well thnx for makin me feel stupid.....lol.....jk

lol don't =P
people make mistakes like that :)

and actually, that's back when I made DPv3 vertex:
(http://lh5.ggpht.com/_IteXPmeC6ek/TQqnZfgF7qI/AAAAAAAACNo/WLR7KOJ_jsY/s640/re-edit.jpg)

I havn't released it yet because this is supposed to be a pack...
(being tired of just releasing simple edits)

all the electricity is green and even his FS is green

DPv4 won't be here for a while...
I'm adding his scythe I made:
(http://lh6.ggpht.com/_IteXPmeC6ek/TENfxydTvSI/AAAAAAAABSc/J0UxRDY0HiE/s512/scythe.jpg)

heh, just look at my ava :3
larger image:
(http://lh5.ggpht.com/_IteXPmeC6ek/TREKZdWqoMI/AAAAAAAACPM/6FADC3K32Vk/s288/avatar.PNG)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 14, 2011, 01:42:48 PM

DEEEERRRRP!

I was looking at materials entirely wrong...
colors are in decimal format:
0.0 to 1.0

take a color and multiply the value:
255 * 0.003921568627450980392156862745098 == 1.0 == '3F 80 00 00'

I'va got sum wrk to do =D

EDIT:
anyone else wanna help??

here's a single material: (FitPikachu_main)

00 00 02 00 FF FF 7E 40 00 00 00 00 03 00 00 00
00 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
61 FE 00 00 0F 61 F6 00 00 04 61 FE 00 00 0F 61
F7 00 00 0E 61 FE 00 00 0F 61 F8 00 00 00 61 FE
00 00 0F 61 F9 00 00 0C 61 FE 00 00 0F 61 FA 00
00 05 61 FE 00 00 0F 61 FB 00 00 0D 61 FE 00 00
0F 61 FC 00 00 0A 61 FE 00 00 0F 61 FD 00 00 0E
61 27 FF FF FF 00 00 00 00 00 00 00 00 00 00 00
61 FE FF FF F0 61 F6 E3 78 C0 61 28 03 F0 40 61
C0 28 F8 AF 61 C2 08 FE B0 61 C1 08 F2 F0 61 C3
08 1F F0 61 10 00 00 00 61 11 00 00 00 00 00 00
61 FE FF FF F0 61 F7 00 38 C0 61 29 3B F3 BF 61
C4 08 06 EF 00 00 00 00 00 61 C5 08 1F F0 00 00
00 00 00 61 12 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


block size
MDL0 offset
ID
unk


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 14, 2011, 05:00:37 PM
What exactly do you need help with?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 14, 2011, 05:07:28 PM
finding out what's unknown :/


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 14, 2011, 06:22:14 PM
Unknown, the psychic type pokemon. These Pokemon ordinarily travel in packs, and are known to spell out the name of their capturer.

(http://dogasu.bulbagarden.net/popular_pkmn/unown.gif)


Title: Re: About DAE to MDL0 Conversion
Post by: SSJCerious on January 14, 2011, 06:28:43 PM
LOL


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 14, 2011, 06:29:30 PM
:notimp:
really roo...


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 14, 2011, 06:40:57 PM
I thought that was a good one. :oshi:

I'm sowee Tech. D:


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 14, 2011, 06:47:43 PM
I thought that was a good one. :oshi:

I'm sowee Tech. D:

well, it's just that it's WAAAAY off topic from what's needed...

don't mean to make ya feel bad :)


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 14, 2011, 06:49:31 PM
Quote

well, it's just that it's WAAAAY off topic from what's needed...

don't mean to make ya feel bad :)

WHAT ARE YOU TO EXPECT?! It's me for crying out loud!!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 14, 2011, 06:52:53 PM
Quote

well, it's just that it's WAAAAY off topic from what's needed...

don't mean to make ya feel bad :)

WHAT ARE YOU TO EXPECT?! It's me for crying out loud!!

lol :P

yea...
lol...

I don't need to say anything further =P


Title: Re: About DAE to MDL0 Conversion
Post by: RandomTBush on January 15, 2011, 06:56:55 AM

DEEEERRRRP!

I was looking at materials entirely wrong...
colors are in decimal format:
0.0 to 1.0

take a color and multiply the value:
255 * 0.003921568627450980392156862745098 == 1.0 == '3F 80 00 00'

I'va got sum wrk to do =D

EDIT:
anyone else wanna help??

here's a single material: (FitPikachu_main)

*bunch of hex values*

block size
MDL0 offset
ID
unk


What you've got there are the shader values. Since Pharrox never really explained much about them, I'm gonna do some trial and error over the next few weeks to determine what those values are all for. But, from blanking out a few values at the end which were different between the normal and Subspace Pikachu models, I got this result:

(http://img.photobucket.com/albums/v336/RandomTalkingBush/Brawl-ShaderModding1a.png)
Alternate image, with the Smash Ball (http://img.photobucket.com/albums/v336/RandomTalkingBush/Brawl-ShaderModding1b.png).

Didn't modify the textures or anything. And with the exact same values as the Subspace Pikachu for everything...

(http://img.photobucket.com/albums/v336/RandomTalkingBush/Brawl-ShaderModding2.png)

It appeared to have a purplish tone to it when up against Meta Knight, and grey for fighting itself, etc.. Kinda weird. Either way, I'm gonna look into what each individual value is for in due time.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 07:41:20 AM
actually RTB...
I can tell you from my own personnal experiance from being a game-dev...
those are materials...

the shaders access from the materials and add the seperate textures (found in Materials1)
to the list of 10 avaliable textures...
Pikachu only has 3 materials:
-main
-eyesYellow
-metal
he has 5 shaders (a seperate shader for each material/object referance)

must I explain any further :)

anyways...

so you've modified the diffuse of the material :/
(what I've been trying to do to get DP's green thunder perfected)
hmm...
when you say "at the end",
where exactly is "the end"
(use my material below as an example) :)

congrats btw ;)

EDIT:
there's only 1 prob with blender's compatibility between shaders... (maybe)

Diffuse:
-Fresnel
-Minnaert
-Toon
-Oren-Nayar
-Lambert

Specular:
-Wardlso
-Toon
-Blinn
-Phong
-Cook Torr


Title: Re: About DAE to MDL0 Conversion
Post by: RandomTBush on January 15, 2011, 07:58:28 AM
I'm just going with what BrawlBox v0.64ß has for the shaders. Pikachu actually has three shader sets -- one for its body (Shader0), one for its Final Smash eyes (Shader1), and one for the Metal Box (Shader2). Exporting Shader0 gives me the same hex byte chunk as you had in your post.

But yeah, they're definitely the shaders that I've been modifying. Taking Shader3 from Leonardo's MDL0 (imported from TMNT: Smash-Up) and applying it to Pikachu, and vice versa makes Leonardo lighter and Pikachu darker.

(http://img.photobucket.com/albums/v336/RandomTalkingBush/Brawl-ShaderModding3.png)

So some of the shader values definitely have something to do with the overall brightness of the models, but so far modifying them gives the common problem with imported models, where the brightness "sticks" after using a Smash Attack. Maybe I'll find out what causes it?

But as for "at the end", I basically mean the last few bytes that aren't "00".


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 08:07:11 AM

*facepalm*
Kryal...
you are so backwards -_-*

well, I'm going to call them by their correct name (materials)
so:
Shader0 = main
Shader1 = eyeYellow
Shader2 = metal

and KK


Title: Re: About DAE to MDL0 Conversion
Post by: RandomTBush on January 15, 2011, 08:14:15 AM
And one more final set of shader swapping, before I start figuring out what those values are for.

(http://img.photobucket.com/albums/v336/RandomTalkingBush/Brawl-ShaderModding4a.png)
Pikachu with Shader1 (EyesYellow) replacing Shader0 (Main)... No shading whatsoever. I've got an idea for one of my WIP vertex hacks from this.

(http://img.photobucket.com/albums/v336/RandomTalkingBush/Brawl-ShaderModding4b.png)
Pikachu with Shader2 (Metal00) replacing Shader0 (Main). Only a solid colour. How odd.

The "cloak" shader didn't seem to work right. It made Pikachu a bit darker, but turned pitch black (like in the first screenshots I posted) after using a Smash Attack.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 08:24:50 AM

yep...
that's exactly how materials work :)

there's nothing odd about that
^(I've done all that crap before (just not in brawl)) =P

so I've PM'd Kryal telling him to change the typos and what not... >_>
I gave him my MDL0 template for HexEdit as well

would you like for me to send you a copy of what I sent him??

EDIT:
and JackH still hasn't fixed the link error for HexEdit in the resources -_-*


Title: Re: About DAE to MDL0 Conversion
Post by: RandomTBush on January 15, 2011, 08:28:13 AM
would you like for me to send you a copy of what I sent him??
Sure. After all, I'm trying to figure out the MDL0 format, too, so I can see what still needs to be documented.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 08:33:19 AM

KK...
give me a quick moment...
I'm adding a reply to my thread of the finished GUI for my converter...

I'll send it after that :)

EDIT:
go figure...
it's not even in my outbox yet D:

whatever -_-
I'm sending you a new one...


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 15, 2011, 08:53:15 AM
Wow, TCLL getting help From RandomTBush. Ees a dream cumb troo!! :D

Well anyways, From what I've heard BJ has completely finished the coding for his converter, and now he's filling in parts of the code for the conversion process. Question is, as far as Material, shaders and stuff like that goes, are they exactly necessary for a model function in brawl?

I mean, Materials and shaders arent exactly necessary for the fuctionality of a model in are they? Perhaps it would be best to test each part of the importer at a time, to see if each part of the conversion process in itself works. You could start by importing the model itself (Of course, boneless) use the Bone adder tool to add enough to replace someone, and as long as the model actually imports, move onto the next part.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 09:09:02 AM
@RTB:
sent :)
(to Kryal as well)

@Roo:
well, if you're talking about just the model alone, then no...

materials are responsible for coloring and adding decals...
(I'm using a material for the sand in my movie (generating the sand texture))

the shaders are basically the extensions of the materials...
these deal with a ton of stuff from rendering glass or adding deformaties,
to rendering fur or creating a more realistic look (using bumpmaps)
shaders also deal with seperate textures... 10 to be exact...
these textures are layered over one another and can be used for trasitions such as grass to dirt


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 15, 2011, 09:15:48 AM
But, havent you ever been tempted to use what you DO have done to at least see if a model COULD be imported? Since Materials and Shaders aren't completely necessary for the functionality of the model, why not try importing something.

It doesn't even have to be a model of a character. Make a Ball or a pyrimid in 3DS max, export as a model type, convert, and see if it can be placed over someone. It'll just be a textureless, shaderless shape, but it would also be the first Non-MDL0 imported model in the UNIVERSE!!!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 09:24:07 AM
But, havent you ever been tempted to use what you DO have done to at least see if a model COULD be imported? Since Materials and Shaders aren't completely necessary for the functionality of the model, why not try importing something.

It doesn't even have to be a model of a character. Make a Ball or a pyrimid in 3DS max, export as a model type, convert, and see if it can be placed over someone. It'll just be a textureless, shaderless shape, but it would also be the first Non-MDL0 imported model in the UNIVERSE!!!

I see what you mean...

still need to figure out the... face...-...points... >_>

hey RTB...
you wouldn't happen to know would you?? :P *asking a stupid question*
I just need to figure out how to get the length of the face-points...


Title: Re: About DAE to MDL0 Conversion
Post by: Oshtoby on January 15, 2011, 11:02:21 AM
And one more final set of shader swapping, before I start figuring out what those values are for.

*PICTURE*
Pikachu with Shader1 (EyesYellow) replacing Shader0 (Main)... No shading whatsoever. I've got an idea for one of my WIP vertex hacks from this.

*PICTURE*
Pikachu with Shader2 (Metal00) replacing Shader0 (Main). Only a solid colour. How odd.

The "cloak" shader didn't seem to work right. It made Pikachu a bit darker, but turned pitch black (like in the first screenshots I posted) after using a Smash Attack.
Hey, how'd you do that? I have the preview version of brawlbox 6.4, and everytime I replace one shader with another, I get an "Object Reference not set to an instance of an object" when trying to save. Is there a newever version of BrawlBox I should be using, or is there a Hexing thing I'm missing, or...? I'd like to play around with this.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 11:46:02 AM
And one more final set of shader swapping, before I start figuring out what those values are for.

*PICTURE*
Pikachu with Shader1 (EyesYellow) replacing Shader0 (Main)... No shading whatsoever. I've got an idea for one of my WIP vertex hacks from this.

*PICTURE*
Pikachu with Shader2 (Metal00) replacing Shader0 (Main). Only a solid colour. How odd.

The "cloak" shader didn't seem to work right. It made Pikachu a bit darker, but turned pitch black (like in the first screenshots I posted) after using a Smash Attack.
Hey, how'd you do that? I have the preview version of brawlbox 6.4, and everytime I replace one shader with another, I get an "Object Reference not set to an instance of an object" when trying to save. Is there a newever version of BrawlBox I should be using, or is there a Hexing thing I'm missing, or...? I'd like to play around with this.

try using a hex editor... =P
Brbx (I don't think) supports replacing them yet...

I'll send you my current template for HexEdit if you like...
(you have to use it in edit mode to see everything)


Title: Re: About DAE to MDL0 Conversion
Post by: Oshtoby on January 15, 2011, 11:53:12 AM
And one more final set of shader swapping, before I start figuring out what those values are for.

*PICTURE*
Pikachu with Shader1 (EyesYellow) replacing Shader0 (Main)... No shading whatsoever. I've got an idea for one of my WIP vertex hacks from this.

*PICTURE*
Pikachu with Shader2 (Metal00) replacing Shader0 (Main). Only a solid colour. How odd.

The "cloak" shader didn't seem to work right. It made Pikachu a bit darker, but turned pitch black (like in the first screenshots I posted) after using a Smash Attack.
Hey, how'd you do that? I have the preview version of brawlbox 6.4, and everytime I replace one shader with another, I get an "Object Reference not set to an instance of an object" when trying to save. Is there a newever version of BrawlBox I should be using, or is there a Hexing thing I'm missing, or...? I'd like to play around with this.

try using a hex editor... =P
Brbx (I don't think) supports replacing them yet...

I'll send you my current template for HexEdit if you like...
(you have to use it in edit mode to see everything)
Absolutely! That'd be awesome!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 12:01:27 PM

uugh... I seem to have disabled my outbox -.-*

RTB, do you still have the message I sent you on SWF??
can you post that here if you do plz :)

EDIT:
also, I've seperated the materials to hopefully make them easier to read:
you can see my template in action behind them too :P
http://lh4.ggpht.com/_IteXPmeC6ek/TTH0E3hXh6I/AAAAAAAACXU/d9A557nErC8/s800/materials.PNG


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 15, 2011, 01:44:56 PM
Ok, a lot happened while I was sleeping in lol

My code is not done. Right now I'm working on assembling the bone structure while the face-points are being figured out. Kryal already has an entire page setup for reading EVERY SINGLE LITTLE BIT of the dae file, so that's not a problem. The part I have to work on is taking the values it returns, converting them correctly and then assembling the values together and writing them to an mdl0. I have the writing part done and almost have the assembling part done.

And Tcll, I can fix the "typos" on Brawlbox v0.64 easily for you :P

p.s. your chat site died O_o


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 01:47:36 PM
Ok, a lot happened while I was sleeping in lol

My code is not done. Right now I'm working on assembling the bone structure while the face-points are being figured out. Kryal already has an entire page setup for reading EVERY SINGLE LITTLE BIT of the dae file, so that's not a problem. The part I have to work on is taking the values it returns, converting them correctly and then assembling the values together and writing them to an mdl0. I have the writing part done and almost have the assembling part done.

And Tcll, I can fix the "typos" on Brawlbox v0.64 easily for you :P

p.s. your chat site died O_o

hang on...
can't really post anything here yet...
http://www.smashboards.com/showthread.php?t=277835


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 15, 2011, 01:59:02 PM
Oh and yeah, you really should learn C#. Kryal's code probably has all your answers, but I'm not sure where to look. If you can find a page that you think might contain an answer to your question, I can take a look at it for you ;)


Title: Re: About DAE to MDL0 Conversion
Post by: RandomTBush on January 15, 2011, 03:58:58 PM
It doesn't even have to be a model of a character. Make a Ball or a pyrimid in 3DS max, export as a model type, convert, and see if it can be placed over someone. It'll just be a textureless, shaderless shape, but it would also be the first Non-MDL0 imported model in the UNIVERSE!!!
And my two Jigglypuff hats and Maxim Tomato replacement aren't?


uugh... I seem to have disabled my outbox -.-*

RTB, do you still have the message I sent you on SWF??
can you post that here if you do plz :)

EDIT:
also, I've seperated the materials to hopefully make them easier to read:
you can see my template in action behind them too :P
[url]http://lh4.ggpht.com/_IteXPmeC6ek/TTH0E3hXh6I/AAAAAAAACXU/d9A557nErC8/s800/materials.PNG[/url]


Here ya go.

(EDIT: Hold on, it broke somehow. Lemme fix it up.)

Quote from: Tcll
here's my HexEdit template:
use with this version of HexEdit (no trial period)
http://lh4.ggpht.com/_IteXPmeC6ek/TTG-lguMneI/AAAAAAAACXI/gGQWKEP-h04/GUI.jpg (http://lh4.ggpht.com/_IteXPmeC6ek/TTG-lguMneI/AAAAAAAACXI/gGQWKEP-h04/GUI.jpg)
 
Code:
<?xml version="1.0"?>
<!DOCTYPE binary_file_format SYSTEM "BinaryFileFormat.dtd">
<binary_file_format name="MDL0" type_name="" comment="" expr="" default_byte_order="big" default_read_only="false" default_char_set="ansi">
 <define_struct type_name="geometries" comment="" expr="">
  <data type="int" name="count" format="signed" len="2" display=""/>
  <for name="point" count="count || count - 1" stop_test="count == 0" type_name="" comment="">
   <struct name="" type_name="" comment="" expr="">
    <if test="header.vtx_des2 == 2" comment="">
     <data type="none" name="vtx2" len="4"/>
    </if>
    <!--
    <if test="header.vtx_des2 == 3" comment="">
     <data type="none" name="vtx3" len="9"/>
    </if>
    -->
   </struct>
  </for>
 </define_struct>
 <define_struct type_name="offset_name" comment="" expr="">
  <data type="int" name="str_len" format="unsigned" len="1" display=""/>
  <data type="string" name="name" format="ascii" len="str_len" display=""/>
 </define_struct>
 <define_struct type_name="bounds" comment="" expr="">
  <data type="int" name="min_X" format="unsigned" len="4" display=""/>
  <data type="int" name="min_Y" format="unsigned" len="4" display=""/>
  <data type="int" name="min_Z" format="unsigned" len="4" display=""/>
  <data type="int" name="max_X" format="unsigned" len="4" display=""/>
  <data type="int" name="max_Y" format="unsigned" len="4" display=""/>
  <data type="int" name="max_Z" format="unsigned" len="4" display=""/>
  <data type="none" name="pad" len="8"/>
 </define_struct>
 <define_struct type_name="relocation_group" comment="" expr="">
  <data type="int" name="block_len" format="unsigned" len="4" display=""/>
  <data type="int" name="num_offsets" format="unsigned" len="4" display=""/>
  <data type="int" name="tag" format="unsigned" len="4" display="hex"/>
  <data type="int" name="unk1" format="unsigned" len="2" display="hex"/>
  <data type="int" name="unk2" format="unsigned" len="2" display="hex"/>
  <data type="int" name="pad" format="unsigned" len="8" display="hex"/>
 </define_struct>
 <define_struct type_name="relocation_offset" comment="" expr="">
  <data type="int" name="ID" format="unsigned" len="2" display=""/>
  <data type="int" name="unk1" format="unsigned" len="2" display="hex"/>
  <data type="int" name="unk2" format="unsigned" len="2" display="hex"/>
  <data type="int" name="unk3" format="unsigned" len="2" display="hex"/>
  <data type="int" name="string_offset" format="unsigned" len="4" display=""/>
  <data type="int" name="data_offset" format="unsigned" len="4" display=""/>
 </define_struct>
 <define_struct type_name="Definitions" comment="" expr="">
  <for name="type" count="" stop_test="this.type == 1" type_name="" comment="">
   <struct name="" type_name="" comment="" expr="type{this.type}">
    <data type="int" name="type" format="unsigned" len="1" display=""/>
    <if test="type == 2" comment="">
     <struct name="t2" type_name="" comment="" expr="({this.ID1},{this.ID2})">
      <data type="int" name="ID1" format="unsigned" len="2" display=""/>
      <data type="int" name="ID2" format="unsigned" len="2" display=""/>
     </struct>
    </if>
    <if test="type == 3" comment="">
     <struct name="t3" type_name="" comment="" expr="({this.ID}) ({this.count})">
      <data type="int" name="ID" format="unsigned" len="2" display=""/>
      <data type="int" name="count" format="unsigned" len="1" display=""/>
      <for name="tmp" count="count || count - 1" stop_test="count == 0" type_name="" comment="">
       <data type="none" name="" len="6"/>
      </for>
     </struct>
    </if>
    <if test="type == 4" comment="">
     <struct name="t4" type_name="" comment="" expr="({this.ID1},{this.ID2},{this.ID3},{this.ID4})">
      <data type="int" name="ID1" format="unsigned" len="2" display=""/>
      <data type="int" name="ID2" format="unsigned" len="2" display=""/>
      <data type="int" name="ID3" format="unsigned" len="2" display=""/>
      <data type="int" name="ID4" format="unsigned" len="1" display=""/>
     </struct>
    </if>
    <if test="type == 5" comment="">
     <struct name="t5" type_name="" comment="" expr="({this.ID1},{this.ID2})">
      <data type="int" name="ID1" format="unsigned" len="2" display=""/>
      <data type="int" name="ID2" format="unsigned" len="2" display=""/>
     </struct>
    </if>
   </struct>
  </for>
 </define_struct>
 <define_struct type_name="Bones" comment="" expr="">
  <struct name="bone_header" type_name="" comment="" expr="">
   <data type="int" name="header_len" len="4" format="unsigned" display=""/>
   <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
   <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
   <data type="int" name="bone_index" len="4" format="unsigned" display=""/>
   <data type="int" name="node_ID" len="4" format="unsigned" display=""/>
   <data type="int" name="flags" len="4" format="unsigned" display=""/>
   <data type="int" name="pad" len="8" format="unsigned" display=""/>
   <struct name="loc_rot_sca" type_name="" comment="" expr="">
    <data type="int" name="sca_X" format="unsigned" len="4" display=""/>
    <data type="int" name="sca_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="sca_Z" len="4" format="unsigned" display=""/>
    <data type="int" name="rot_X" len="4" format="unsigned" display=""/>
    <data type="int" name="rot_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="rot_Z" len="4" format="unsigned" display=""/>
    <data type="int" name="loc_X" len="4" format="unsigned" display=""/>
    <data type="int" name="loc_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="loc_Z" len="4" format="unsigned" display=""/>
   </struct>
   <struct name="bound" type_name="" comment="" expr="">
    <data type="int" name="min_X" len="4" format="unsigned" display=""/>
    <data type="int" name="min_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="min_Z" len="4" format="unsigned" display=""/>
    <data type="int" name="max_X" len="4" format="unsigned" display=""/>
    <data type="int" name="max_Y" len="4" format="unsigned" display=""/>
    <data type="int" name="max_Z" len="4" format="unsigned" display=""/>
   </struct>
   <data type="int" name="parent" len="4" format="signed" display=""/>
   <data type="int" name="child" len="4" format="unsigned" display=""/>
   <data type="int" name="next" len="4" format="unsigned" display=""/>
   <data type="int" name="prev" len="4" format="unsigned" display=""/>
   <data type="int" name="part2" len="4" format="unsigned" display=""/>
  </struct>
  <struct name="frame_matrix" type_name="" comment="" expr="">
   <data type="int" name="s_1_1" format="signed" len="4" display=""/>
   <data type="int" name="s_2_1" format="signed" len="4" display=""/>
   <data type="int" name="s_3_1" format="signed" len="4" display=""/>
   <data type="int" name="s_4_1" format="signed" len="4" display=""/>
   <data type="int" name="s_1_2" format="signed" len="4" display=""/>
   <data type="int" name="s_2_2" format="signed" len="4" display=""/>
   <data type="int" name="s_3_2" format="signed" len="4" display=""/>
   <data type="int" name="s_4_2" format="signed" len="4" display=""/>
   <data type="int" name="s_1_3" format="signed" len="4" display=""/>
   <data type="int" name="s_2_3" format="signed" len="4" display=""/>
   <data type="int" name="s_3_3" format="signed" len="4" display=""/>
   <data type="int" name="s_4_3" format="signed" len="4" display=""/>
  </struct>
  <struct name="inverse_matrix" type_name="" comment="" expr="">
   <data type="int" name="s_1_1" format="signed" len="4" display=""/>
   <data type="int" name="s_2_1" format="signed" len="4" display=""/>
   <data type="int" name="s_3_1" format="signed" len="4" display=""/>
   <data type="int" name="s_4_1" format="signed" len="4" display=""/>
   <data type="int" name="s_1_2" format="signed" len="4" display=""/>
   <data type="int" name="s_2_2" format="signed" len="4" display=""/>
   <data type="int" name="s_3_2" format="signed" len="4" display=""/>
   <data type="int" name="s_4_2" format="signed" len="4" display=""/>
   <data type="int" name="s_1_3" format="signed" len="4" display=""/>
   <data type="int" name="s_2_3" format="signed" len="4" display=""/>
   <data type="int" name="s_3_3" format="signed" len="4" display=""/>
   <data type="int" name="s_4_3" format="signed" len="4" display=""/>
  </struct>
 </define_struct>
 <define_struct type_name="Vertices" comment="" expr="">
  <struct name="vertice_header" type_name="" comment="" expr="">
   <data type="int" name="block_size" len="4" format="unsigned" display=""/>
   <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
   <data type="int" name="data_offset" len="4" format="unsigned" display=""/>
   <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
   <data type="int" name="ID" len="4" format="unsigned" display=""/>
   <data type="int" name="isXYZ" len="4" format="unsigned" display=""/>
   <data type="int" name="type" len="4" format="unsigned" display=""/>
   <data type="int" name="modifier" len="1" format="unsigned" display=""/>
   <data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
   <data type="int" name="num_vertices" len="2" format="unsigned" display=""/>
   <if test="isXYZ == 1" comment="">
    <use_struct name="bounds" expr="" type_name="bounds" comment=""/>
   </if>
  </struct>
  <data type="string" name="vertices" len="vertice_header.entry_stride * vertice_header.num_vertices" format="default" display="vert structures" comment="I could've put a 'FOR' here,
but it'd take too long when loading the file"/>
  <data type="none" name="pad" len="vertice_header.block_size - (vertice_header.entry_stride*vertice_header.num_vertices) - vertice_header.data_offset"/>
 </define_struct>
 <define_struct type_name="Normals" comment="" expr="">
  <struct name="normal_header" type_name="" comment="" expr="">
   <data type="int" name="block_size" len="4" format="unsigned" display=""/>
   <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
   <data type="int" name="data_offset" len="4" format="unsigned" display=""/>
   <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
   <data type="int" name="ID" len="4" format="unsigned" display=""/>
   <data type="int" name="isXYZ" len="4" format="unsigned" display=""/>
   <data type="int" name="type" len="4" format="unsigned" display=""/>
   <data type="int" name="modifier" len="1" format="unsigned" display=""/>
   <data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
   <data type="int" name="num_normals" len="2" format="unsigned" display=""/>
   <if test="isXYZ == 1" comment="">
    <use_struct name="bounds" expr="" type_name="bounds" comment=""/>
   </if>
  </struct>
  <data type="string" name="normals" format="default" display="normal structures" len="normal_header.entry_stride*normal_header.num_normals" comment="I could've put a 'FOR' here,
but it'd take too long when loading the file"/>
  <data type="none" name="pad" len="normal_header.block_size - (normal_header.entry_stride*normal_header.num_normals) - normal_header.data_offset"/>
 </define_struct>
 <define_struct type_name="Colors" comment="" expr="">
  <struct name="color_header" type_name="" comment="" expr="">
   <data type="int" name="block_size" len="4" format="signed" display=""/>
   <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
   <data type="int" name="data_offset" len="4" format="signed" display=""/>
   <data type="int" name="string_offset" len="4" format="signed" display=""/>
   <data type="int" name="ID" len="4" format="signed" display=""/>
   <data type="int" name="isRGBA" len="4" format="signed" display=""/>
   <data type="int" name="type" len="4" format="signed" display=""/>
   <data type="int" name="entry_stride" len="1" format="signed" display=""/>
   <data type="int" name="modifier" len="1" format="signed" display=""/>
   <data type="int" name="num_colors" len="2" format="signed" display=""/>
  </struct>
  <for name="color" count="color_header.num_colors || color_header.num_colors - 1" stop_test="color_header.num_colors == 0" type_name="" comment="">
   <data type="none" name="color" len="color_header.entry_stride"/>
  </for>
  <data type="none" name="pad" len="color_header.block_size - (color_header.num_colors*color_header.entry_stride) - 32"/>
 </define_struct>
 <define_struct type_name="UV_Points" comment="" expr="">
  <struct name="UV_header" type_name="" comment="" expr="">
   <data type="int" name="block_size" len="4" format="unsigned" display=""/>
   <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
   <data type="int" name="data_offset" len="4" format="unsigned" display=""/>
   <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
   <data type="int" name="ID" len="4" format="unsigned" display=""/>
   <data type="int" name="isXY" len="4" format="unsigned" display=""/>
   <data type="int" name="type" len="4" format="unsigned" display=""/>
   <data type="int" name="modifier" len="1" format="unsigned" display=""/>
   <data type="int" name="entry_stride" len="1" format="unsigned" display=""/>
   <data type="int" name="num_UVs" len="2" format="unsigned" display=""/>
   <if test="isXY == 1" comment="">
    <struct name="bounds" expr="" type_name="" comment="">
     <data type="int" name="min_X" format="unsigned" len="4" display=""/>
     <data type="int" name="min_Y" format="unsigned" len="4" display=""/>
     <data type="int" name="max_X" format="unsigned" len="4" display=""/>
     <data type="int" name="max_Y" format="unsigned" len="4" display=""/>
     <data type="none" name="pad" len="16"/>
    </struct>
   </if>
  </struct>
  <data type="string" name="UVs" len="UV_header.entry_stride * UV_header.num_UVs" format="default" display="uv structures" comment="I could've put a 'FOR' here,
but it'd take too long when loading the file"/>
  <data type="none" name="pad" len="UV_header.block_size - (UV_header.entry_stride*UV_header.num_UVs) - UV_header.data_offset"/>
 </define_struct>
 <define_struct type_name="Shaders" comment="" expr="">
  <struct name="header" type_name="" comment="" expr="">
   <data type="int" name="block_size" len="4" format="unsigned" display=""/>
   <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
   <data type="int" name="string_offset" len="4" format="unsigned" display=""/>
   <data type="int" name="ID" len="4" format="unsigned" display=""/>
   <data type="int" name="unk1" len="4" format="unsigned" display=""/>
   <data type="int" name="textures" len="1" format="unsigned" display=""/>
   <data type="int" name="num_layers" len="1" format="unsigned" display=""/>
   <data type="int" name="Flag3" len="1" format="unsigned" display=""/>
   <data type="int" name="Flag4" len="1" format="unsigned" display=""/>
   <data type="int" name="type" len="4" format="unsigned" display=""/>
   <data type="int" name="Flag5" len="1" format="unsigned" display=""/>
   <data type="int" name="Flag6" len="1" format="unsigned" display=""/>
   <data type="int" name="Flag7" len="1" format="unsigned" display=""/>
   <data type="int" name="Flag8" len="1" format="unsigned" display=""/>
   <data type="int" name="unk3" format="unsigned" len="4" display=""/>
   <data type="int" name="unk4" format="signed" len="4" display=""/>
   <data type="int" name="material_offset" format="signed" len="4" display=""/>
   <data type="int" name="num_textures" format="signed" len="4" display=""/>
   <data type="int" name="textures_offset" format="signed" len="4" display=""/>
   <data type="int" name="P4_offset" format="signed" len="4" display=""/>
   <data type="int" name="P5_offset" format="signed" len="4" display=""/>
   <data type="int" name="P6_offset" format="signed" len="4" display=""/>
  </struct>
  <data type="none" name="tmp" len="header.textures_offset - 64"/><jump offset="header.material_offset+(header.MDL0_offset*-1)" comment="" origin="start">
   <use_struct name="Material_Reference" expr="" type_name="Materials" comment=""/>
  </jump>
  <if test="header.textures_offset != 0" comment="">
   <jump offset="header.textures_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <for name="texture" count="header.textures || header.textures -1" stop_test="header.textures == 0" type_name="" comment="">
     <struct name="texture" type_name="" comment="" expr="{this.offset_name.name}">
      <data type="int" name="string_offset" format="signed" len="4" display=""/>
      <data type="int" name="pad" len="4" format="signed" display=""/>
      <data type="int" name="unk1" format="signed" len="4" display=""/>
      <data type="int" name="unk2" format="signed" len="4" display=""/>
      <data type="int" name="unk3" format="signed" len="4" display=""/>
      <data type="int" name="unk4" format="signed" len="4" display=""/>
      <data type="int" name="layerID1" format="signed" len="4" display=""/>
      <data type="int" name="layerID2" format="signed" len="4" display=""/>
      <data type="int" name="unk5" format="signed" len="4" display=""/>
      <data type="int" name="unk6" format="signed" len="4" display=""/>
      <data type="int" name="float" format="unsigned" len="4" display=""/>
      <data type="int" name="unk7" format="signed" len="4" display=""/>
      <data type="int" name="unk8" format="signed" len="4" display=""/>
      <jump offset="string_offset -53" comment="" origin="current">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </jump>
  </if>
  <if test="header.P4_offset != 0" comment="">
   <jump offset="header.P4_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <struct name="P4" type_name="" comment="" expr="">
     <data type="int" name="tmp" format="signed" len="4" display=""/>
    </struct>
   </jump>
  </if>
  <if test="header.P5_offset != 0" comment="">
   <jump offset="header.P5_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <struct name="P5" type_name="" comment="" expr="">
     <data type="none" name="tmp" len="384"/>
    </struct>
   </jump>
  </if>
  <if test="header.P6_offset != 0" comment="">
   <jump offset="header.P6_offset+(header.MDL0_offset*-1)" comment="" origin="start">
    <struct name="P6" type_name="" comment="" expr="">
     <data type="none" name="tmp" len="384"/>
    </struct>
   </jump>
  </if>
 </define_struct>
 <define_struct type_name="Materials" comment="" expr="">
  <struct name="header" type_name="" comment="" expr="">
   <data type="int" name="block_length" format="signed" len="4" display=""/>
   <data type="int" name="MDL0_offset" format="signed" len="4" display=""/>
   <data type="int" name="ID" format="signed" len="4" display=""/>
   <data type="int" name="unk" format="unsigned" len="1" display=""/>
  </struct>
  <data type="none" name="tmp" len="header.block_length - 13"/>
 </define_struct>
 <define_struct type_name="Objects" comment="" expr="">
  <struct name="header" type_name="" comment="" expr="">
   <data type="int" name="block_size" len="4" format="signed" display=""/>
   <data type="int" name="MDL0_offset" len="4" format="signed" display=""/>
   <data type="int" name="node_ID" len="4" format="signed" display=""/>
   <data type="int" name="vtx_des1" len="4" format="signed" display=""/>
   <data type="int" name="vtx_des2" len="4" format="signed" display=""/>
   <data type="int" name="vtx_addons" len="4" format="signed" display=""/>
   <data type="int" name="layout1" len="4" format="signed" display="" comment="vtx, nor, and clr"/>
   <data type="int" name="layout2" len="4" format="signed" display="" comment="uv src"/>
   <data type="int" name="shader_instr" len="4" format="signed" display=""/>
   <data type="int" name="data_len" len="4" format="signed" display=""/>
   <data type="int" name="data_len2" len="4" format="signed" display=""/>
   <data type="int" name="data_offset" len="4" format="signed" display=""/>
   <data type="int" name="layout3" len="4" format="signed" display="" comment="vtx src"/>
   <data type="int" name="unk" len="4" format="signed" display=""/>
   <data type="int" name="string_offset" len="4" format="signed" display=""/>
   <data type="int" name="ID" len="4" format="signed" display=""/>
   <data type="int" name="num_verts" len="4" format="signed" display=""/>
   <data type="int" name="num_faces" len="4" format="signed" display=""/>
   <data type="int" name="pos_inp" len="2" format="signed" display=""/>
   <data type="int" name="nor_inp" len="2" format="signed" display=""/>
   <data type="int" name="clr0_inp" len="2" format="signed" display=""/>
   <data type="int" name="clr1_inp" len="2" format="signed" display=""/>
   <data type="int" name="crd0_inp" len="2" format="signed" display=""/>
   <data type="int" name="crd1_inp" len="2" format="signed" display=""/>
   <data type="int" name="crd2_inp" len="2" format="signed" display=""/>
   <data type="int" name="crd3_inp" len="2" format="signed" display=""/>
   <data type="int" name="crd4_inp" len="2" format="signed" display=""/>
   <data type="int" name="crd5_inp" len="2" format="signed" display=""/>
   <data type="int" name="crd6_inp" len="2" format="signed" display=""/>
   <data type="int" name="crd7_inp" len="2" format="signed" display=""/>
   <data type="int" name="weights" len="4" format="signed" display=""/>
  </struct>
  <!--<jump offset="(header.MDL0_offset*-1) + header.data_offset +36" comment="" origin="start">
   <for name="type" count="" stop_test="this.type == 0" type_name="" comment="">
    <struct name="" type_name="" comment="" expr="{this.type}">
     <data type="int" name="type" format="unsigned" len="1" display="hex"/>
     <if test="type == 32" comment="">
      <data type="none" name="pos_mtx" len="4"/>
     </if>
     <if test="type == 40" comment="">
      <data type="none" name="nor_mtx" len="4"/>
     </if>
     <if test="type == 48" comment="">
      <data type="none" name="tex_mtx" len="4"/>
     </if>
     <if test="type == 56" comment="">
      <data type="none" name="lit_mtx" len="4"/>
     </if>
     <if test="type == 128" comment="">
      <use_struct name="Quad" expr="" type_name="geometries" comment=""/>
     </if>
     <if test="type == 144" comment="">
      <use_struct name="Tri" expr="" type_name="geometries" comment=""/>
     </if>
     <if test="type == 152" comment="">
      <use_struct name="Tri_Strip" expr="" type_name="geometries" comment=""/>
     </if>
     <if test="type == 160" comment="">
      <use_struct name="Tri_Fan" expr="" type_name="geometries" comment=""/>
     </if>
     <if test="type == 168" comment="">
      <use_struct name="Line" expr="" type_name="geometries" comment=""/>
     </if>
     <if test="type == 176" comment="">
      <use_struct name="Line_Strip" expr="" type_name="geometries" comment=""/>
     </if>
     <if test="type == 184" comment="">
      <use_struct name="Point" expr="" type_name="geometries" comment=""/>
     </if>
    </struct>
   </for>
  </jump>-->
 </define_struct>
 <define_struct type_name="Textures" comment="" expr="">
  <data type="int" name="textures" format="signed" len="4" display=""/>
  <for name="texture" count="textures || textures - 1" stop_test="textures == 0" type_name="" comment="">
   <struct name="texture" type_name="" comment="" expr="X: {this.X}, Y: {this.Y}">
    <data type="int" name="X" format="unsigned" len="4" display=""/>
    <data type="int" name="Y" format="unsigned" len="4" display=""/>
   </struct>
  </for>
 </define_struct>
 <define_struct type_name="Pallets" comment="" expr="">
  <data type="int" name="pallets" format="signed" len="4" display=""/>
  <for name="pallet" count="pallets || pallets - 1" stop_test="pallets == 0" type_name="" comment="">
   <struct name="texture" type_name="" comment="" expr="X: {this.X}, Y: {this.Y}">
    <data type="int" name="X" format="unsigned" len="4" display=""/>
    <data type="int" name="Y" format="unsigned" len="4" display=""/>
   </struct>
  </for>
 </define_struct>
 <struct name="header" type_name="" comment="" expr="">
  <data type="string" name="magic" len="4" format="ascii" display=""/>
  <data type="int" name="filesize" format="unsigned" len="4" display=""/>
  <data type="int" name="sections" format="unsigned" len="4" display=""/>
  <data type="int" name="nodes" format="signed" len="4" display=""/>
  <struct name="lists" type_name="" comment="" expr="">
   <data type="int" name="Definitions" format="unsigned" len="4" display=""/>
   <data type="int" name="Bones" format="unsigned" len="4" display=""/>
   <data type="int" name="Vertices" format="unsigned" len="4" display=""/>
   <data type="int" name="Normals" format="unsigned" len="4" display=""/>
   <data type="int" name="Colors" format="unsigned" len="4" display=""/>
   <data type="int" name="UV_Points" format="unsigned" len="4" display=""/>
   <data type="int" name="Shaders" format="unsigned" len="4" display=""/>
   <data type="int" name="Materials" format="unsigned" len="4" display=""/>
   <data type="int" name="Objects" format="unsigned" len="4" display=""/>
   <data type="int" name="Textures" format="unsigned" len="4" display=""/>
   <data type="int" name="Pallets" format="unsigned" len="4" display=""/>
  </struct>
  <data type="int" name="name_offset" format="unsigned" len="4" display=""/>
  <data type="int" name="header_len" format="unsigned" len="4" display=""/>
  <data type="int" name="header_offset" format="signed" len="4" display=""/>
  <data type="int" name="unk1" format="unsigned" len="4" display=""/>
  <data type="int" name="unk2" format="unsigned" len="4" display=""/>
  <data type="int" name="num_verticies" format="unsigned" len="4" display=""/>
  <data type="int" name="num_faces" format="unsigned" len="4" display=""/>
  <data type="int" name="unk3" format="unsigned" len="4" display=""/>
  <data type="int" name="num_nodes" format="unsigned" len="4" display=""/>
  <data type="int" name="version" format="unsigned" len="4" display=""/>
  <data type="int" name="unk4" format="unsigned" len="2" display=""/>
  <data type="int" name="unk5" format="unsigned" len="2" display=""/>
  <struct name="bounds" type_name="" comment="" expr="">
   <data type="int" name="min_X" format="unsigned" len="4" display=""/>
   <data type="int" name="min_Y" format="unsigned" len="4" display=""/>
   <data type="int" name="min_Z" format="unsigned" len="4" display=""/>
   <data type="int" name="max_X" format="unsigned" len="4" display=""/>
   <data type="int" name="max_Y" format="unsigned" len="4" display=""/>
   <data type="int" name="max_Z" format="unsigned" len="4" display=""/>
  </struct>
 </struct>
 <jump offset="header.nodes * -1" comment="" origin="start">
  <struct name="nodes" type_name="" comment="" expr="">
   <data type="int" name="num_nodes" format="signed" len="4" display=""/>
   <for name="node" count="num_nodes || num_nodes - 1" stop_test="num_nodes == 0" type_name="" comment="">
    <data type="int" name="node" format="signed" len="4" display=""/>
   </for>
  </struct>
 </jump>
 <if test="header.lists.Definitions == 0" comment="">
  <jump offset="header.lists.Definitions" comment="" origin="start">
   <struct name="Definitions" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Definitions" comment="" origin="start">
       <use_struct name="Definitions" expr="" type_name="Definitions" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Definitions - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.Bones != 0" comment="">
  <jump offset="header.lists.Bones" comment="" origin="start">
   <struct name="Bones" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Bones" comment="" origin="start">
       <use_struct name="Bone_data" expr="" type_name="Bones" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Bones - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.Vertices != 0" comment="">
  <jump offset="header.lists.Vertices" comment="" origin="start">
   <struct name="Vertices" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Vertices" comment="" origin="start">
       <use_struct name="Vertices" expr="" type_name="Vertices" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Vertices - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.Normals != 0" comment="">
  <jump offset="header.lists.Normals" comment="" origin="start">
   <struct name="Normals" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Normals" comment="" origin="start">
       <use_struct name="Normals" expr="" type_name="Normals" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Normals - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.Colors != 0" comment="">
  <jump offset="header.lists.Colors" comment="" origin="start">
   <struct name="Colors" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Colors" comment="" origin="start">
       <use_struct name="Colors" expr="" type_name="Colors" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Colors - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.UV_Points != 0" comment="">
  <jump offset="header.lists.UV_Points" comment="" origin="start">
   <struct name="UV_Points" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.UV_Points" comment="" origin="start">
       <use_struct name="UV_Points" expr="" type_name="UV_Points" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.UV_Points - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.Shaders != 0" comment="">
  <jump offset="header.lists. Shaders" comment="" origin="start">
   <struct name="Shaders" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Shaders" comment="" origin="start">
       <use_struct name="Shaders" expr="" type_name="Shaders" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Shaders - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>


Title: Re: About DAE to MDL0 Conversion
Post by: RandomTBush on January 15, 2011, 04:04:54 PM
Gah, I have to put the last part in a separate post. Stupid character limit.

Quote from: Tcll
Code:
<if test="header.lists.Materials != 0" comment="">
  <jump offset="header.lists.Materials" comment="" origin="start">
   <struct name="Materials" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Materials" comment="" origin="start">
       <use_struct name="Materials" expr="" type_name="Materials" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Materials - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.Objects != 0" comment="">
  <jump offset="header.lists.Objects" comment="" origin="start">
   <struct name="Objects" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Objects" comment="" origin="start">
       <use_struct name="Objects" expr="" type_name="Objects" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Objects - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.Textures != 0" comment="">
  <jump offset="header.lists.Textures" comment="" origin="start">
   <struct name="Textures" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Textures" comment="" origin="start">
       <use_struct name="Textures" expr="" type_name="Textures" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Textures - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <if test="header.lists.Pallets != 0" comment="">
  <jump offset="header.lists.Pallets" comment="" origin="start">
   <struct name="Pallets" type_name="" comment="" expr="">
    <use_struct name="relocation_group" expr="" type_name="relocation_group" comment=""/>
    <for name="data" count="relocation_group.num_offsets || relocation_group.num_offsets - 1" stop_test="relocation_group.num_offsets == 0" type_name="" comment="">
     <struct name="data" type_name="" comment="" expr="{this.offset_name.name}">
      <use_struct name="relocation_offset" expr="" type_name="relocation_offset" comment=""/>
      <jump offset="relocation_offset.data_offset + header.lists.Pallets" comment="" origin="start">
       <use_struct name="Pallets" expr="" type_name="Pallets" comment=""/>
      </jump>
      <jump offset="relocation_offset.string_offset + header.lists.Pallets - 1" comment="" origin="start">
       <use_struct name="offset_name" expr="" type_name="offset_name" comment=""/>
      </jump>
     </struct>
    </for>
   </struct>
  </jump>
 </if>
 <data type="none" name="none"/>
</binary_file_format>

paste that in:
C:/Documents and Settings\*user*\Application Data\ECSoftware\HexEdit\_mdl0.xml
and open an mdl0 file in HexEdit...
 
now, the template doesn't initiate automatically :/
when you open the mdl0,
go to 'view'-'template'-'split window'
and be sure to turn the auto sync on as well (looks like 3 red arrows "back, forth, back")
 
be sure to set allow editing...
(shows everything)

@Kryal:
in the last massage I sent you,
that template will cause an error
use this one...


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 05:16:21 PM
I think I may have figured it out...
but don't quote me on it as there's quite a large possibility I could be wrong :/

here's what I think since Kryal redirected me:
Mat1 = Materials/Shaders combined (basic internal software stuff)
Mat2 = low-level Shader intructions (can be shared)

Mat1 = Materials
Mat2 = "Shaders" (not really a good word for these)

btw:
here's why my site don't work atm:
The VistaPanel is undergoing maintenance for the next 5 - 7 days.

Sorry the the inconvenience.

EDIT @ RTB:
thanx...
and yea... -_-*

EDIT2:
I'd personnaly prefer to call the Mat2 data just plain Settings...

apparently they deal with "defining" a shader... >_>


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 15, 2011, 07:01:34 PM
Tech, whats wrong with the chat? Could you please either fix it, or do you have another place in mind?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 07:22:18 PM
I think I may have figured it out...
but don't quote me on it as there's quite a large possibility I could be wrong :/

here's what I think since Kryal redirected me:
Mat1 = Materials/Shaders combined (basic internal software stuff)
Mat2 = low-level Shader intructions (can be shared)

Mat1 = Materials
Mat2 = "Shaders" (not really a good word for these)

btw:
here's why my site don't work atm:
The VistaPanel is undergoing maintenance for the next 5 - 7 days.

Sorry the the inconvenience.

EDIT @ RTB:
thanx...
and yea... -_-*

EDIT2:
I'd personnaly prefer to call the Mat2 data just plain Settings...

apparently they deal with "defining" a shader... >_>


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 15, 2011, 07:25:06 PM
DOH. >.<

I'm annoying the crap out of you lately huh tech? >_>


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 07:32:32 PM
DOH. >.<

I'm annoying the crap out of you lately huh tech? >_>

lol...
no...
Kryal's kinda touchy is all :P

at least he's helping :)


Title: Re: About DAE to MDL0 Conversion
Post by: RandomTBush on January 15, 2011, 07:44:48 PM
Well, here's what I've noticed from the material properties chunk so far:

00000200 - Length
FFFF71A0 - MDL0 Offset
00000000 - Shader ID
03 - Flag
00 - Res. 0 (Always 0?)
00 - Res. 1 (Always 0?)
00 - Res. 2 (Always 0?)
00 - Ref. 0 - There seems to be one non-FF value for each texture used.
FF - Ref. 1
FF - Ref. 2
FF - Ref. 3
FF - Ref. 4
FF - Ref. 5
FF - Ref. 6
FF - Ref. 7
0000000000 00000061FE
00000F61F6 00000461FE
00000F61F7 00000E61FE
00000F61F8 00000061FE
00000F61F9 00000C61FE
00000F61FA 00000561FE
00000F61FB 00000D61FE
00000F61FC 00000A61FE
00000F61FD 00000E6127
FFFFFF - Unknown? (Leonardo has "FFFFD2" here, and Roll has "FFFFED".)
00000000 00000000 - Filler

00000061FE FFFFF061F6
E378C06128 03F04061C0
28F8AF61C2 08FEB061C1
08F2F061C3 081FF06110
0000006111 000000

00000061FE FFFFF061F7
0038C06129 3BF3BF61C4
0806EF0000 00000061C5
081FF00000 0000006112
0000000000 000000

All byte sets in green seem to be common in the models. What I mean, is that from all of the values I've checked from other models (Pikachu, Leonardo, Roll, Amy, and Eevee so far), they all seem to be the same.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 08:14:25 PM
@RTB:
Quote from: Kryal;11988643
BLib has a dae import/export class that is mostly done, but won't work with blender. It properly exports texture coords and bones/skins to Maya/Max.

 

For the sake of example, here's the decoded 'Shader0' from FitPikachu00:

 

Code:

----Block 0----

61 FE 00 00 0F - BP Mask 0x0F

61 F6 00 00 04 - KSel[0] (Swap Mode) = ?4 [S1=0,S2=1]

61 FE 00 00 0F - BP Mask 0x0F

61 F7 00 00 0E - KSel[1] (Swap Mode) = ?E [S1=2,S2=3]

61 FE 00 00 0F - BP Mask 0x0F

61 F8 00 00 00 - KSel[2] (Swap Mode) = ?0 [S1=0,S2=0]

61 FE 00 00 0F - BP Mask 0x0F

61 F9 00 00 0C - KSel[3] (Swap Mode) = ?C [S1=0,S2=3]

61 FE 00 00 0F - BP Mask 0x0F

61 FA 00 00 05 - KSel[4] (Swap Mode) = ?5 [S1=1,S2=1]

61 FE 00 00 0F - BP Mask 0x0F

61 FB 00 00 0D - KSel[5] (Swap Mode) = ?D [S1=1,S2=3]

61 FE 00 00 0F - BP Mask 0x0F

61 FC 00 00 0A - KSel[6] (Swap Mode) = ?F [S1=2,S2=2]

61 FE 00 00 0F - BP Mask 0x0F

61 FD 00 00 0E - KSel[7] (Swap Mode) = ?E [S1=2,S2=3]

61 27 FF FF FF - IREF = 0xFFFFFF

PADDING

 

---Block 1---

61 FE FF FF F0 - BP Mask 0xFFFFF0

61 F6 E3 78 C0 - KSel[0] (Sel Mode) = 0xE378C? [C0=C,A0=1C,C1=D,A1=1C]

(Enable tex/color/coord map 0 for stage 0, disable stage 1)

61 28 03 F0 40 - TRef[0]   = 0x03F040 [TM0=0,TC0=0,En0=1,CC=0,TM1=7,TC2=7,En1=0,CC1=0]

61 C0 28 F8 AF - ColEnv[0] = 0x28F8AF [D=F,C=A,B=8,A=F,Bias=0,Op=0,Clamp=1,Shift=2,Dest=0]

61 C2 08 FE B0 - ColEnv[1] = 0x08FEB0

61 C1 08 F2 F0 - AlpEnc[0] = 0x08F2F0 [RS=0,TS=0,D=7,C=5,B=4,A=7,Bias=0,Op=0,Clamp=1,Shift=0,Dest=0]

61 C3 08 1F F0 - AlpEnc[1] = 0x081FF0

61 10 00 00 00 - Cmd[0]       = 0x000000

61 11 00 00 00 - Cmd[1]    = 0x000000

PADDING

 

--Block2--

61 FE FF FF F0 - BP Mask 0xFFFFF0

61 F7 00 38 C0 - KSel[1] (Sel Mode) = 0x0038C?

61 29 3B F3 BF - TRef[1]   = 0x3BF3BF

61 C4 08 0F EF - ColEnv[2] = 0x080FEF

00 00 00 00 00 - NOP

61 C5 08 1F F0 - AlpEnv[2] = 0x081FF0

00 00 00 00 00 - NOP

61 12 00 00 00 - Cmd[2]    = 0x000000

PADDING


 

There are three code blocks. GPU display lists must align to 16-byte blocks, which is why they are padded with zeros at the end. Technically, they could all be executed in one batch, but because they have been separated in such a manner it's possible they are used individually.

 

These commands directly control the Texture Environment (TEV) and the processing of each stage (up to 16).

 

IMPORTANT! THESE COMMANDS REFERENCE TEXTURE, TEXCOORD AND COLOR MAPS USED IN MATERIALS! This is why you can't just swap out 'shaders'. Materials define the texture layers for a polygon which includes texture coordinates, texture matrices and color sets. Even though you may be using a texture coordinate with an ID of 12, it's been assigned to layer 0 in the material. The 'shader' must then enable coordinate 0 with respect to the material layout.

 

So, these structures closely regulate the texture environment while processing textures on a material. The material sets global rendering options such as transparency and clipping, while the 'shader' sets fine-tuned options in the color pipeline to simulate shaders.

 


Title: Re: About DAE to MDL0 Conversion
Post by: RandomTBush on January 15, 2011, 08:21:41 PM
Aha, that helps clear things up a bit. :)


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 15, 2011, 08:29:02 PM
@anyone:
here's my chat group:
http://tcll5850.chatango.com/

anyone who wants to join, feel free :)


Title: Re: About DAE to MDL0 Conversion
Post by: TheShyGuy on January 19, 2011, 09:22:36 PM
wut do u guys gotta figure out about the mdl0 at this point? Or are you guys at the point of just converting to other formats now....srry not up to date lol...

edit:
i might re-make ur mdl0 template(to know a bit more about the mdl0) in c#, if you mind just reply...I wont be using the source(cuz i dunno xml) just a reg mdl0 file.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 20, 2011, 03:22:15 PM
wut do u guys gotta figure out about the mdl0 at this point? Or are you guys at the point of just converting to other formats now....srry not up to date lol...

edit:
i might re-make ur mdl0 template(to know a bit more about the mdl0) in c#, if you mind just reply...I wont be using the source(cuz i dunno xml) just a reg mdl0 file.


here's where progress is taking me :/
http://www.smashboards.com/showthread.php?t=295671

and I don't care ;)
that's why I built the template...

but don't look at the code through the XML

switch into edit mode and look at the code through there :/
the jumps and structs are what do all the work :)

EDIT:
forgot to say...
don't edit the current template you have...
I'm bout to have a big UD with alot of edits and helpers :)
and the names are alot more accurate too ;)

I won't fix the 0 offset just yet...
it's not causing too much of a prob right now,
but I will prbly need it fixed for upcoming edits...
so I'll fix it in my next UD when I have some time... ;)


Title: Re: About DAE to MDL0 Conversion
Post by: Naruto200Man on January 22, 2011, 09:56:19 PM
I dunno for sure if this is possible, but to help avoid any glitches with trans N perhaps you should have an option that allows to select the character that you're exporting the mdl0 to. I mean like, the program sets up the new model's bones, polygons etc to work SPASIFICALLY with X character. Even if X character used to be on Y character.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 22, 2011, 10:59:58 PM
What you'll have to do is set up the bone structure in 3ds max before converting. Just put the transN bone in the correct place and convert. And you'll still have to do some glitch fixing in the PSA.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 23, 2011, 09:10:29 AM

hey RTB...
you still viewing this thread <:\

IDK how much you know,
but I've asked the famous and knowledgable people,
and they're being a bunch of losers...

Pharrox up and left and even though he's been on recently,
he hasn't answered or reply'd to anything I've left for him...
he was a very big help at first though :/
Kryal is kinda following by not answering anything I ask...
Bero (I'm told) knows a little, but isn't really showing it in the areas I need...
then again, the Q's I asked were directed more to Kryal with him around...
(not laying anything on him) ;)

so yea...
I've been down jerk-lane...
actually, I'm still kinda in the middle of it...
you wanna help me out of it so I can finally complete this dang plugin... plz... *mixed emotions*

I'll try to PM Bero and see what he says... :/


Title: Re: About DAE to MDL0 Conversion
Post by: SSJCerious on January 23, 2011, 09:15:55 AM
Wow, I can see why no one wants to help you.

"but I've asked the famous and knowledgable people,
and they're being a bunch of losers..."

Do you actually expect to get help with that attitude?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 23, 2011, 09:40:08 AM
Wow, I can see why no one wants to help you.

"but I've asked the famous and knowledgable people,
and they're being a bunch of losers..."

Do you actually expect to get help with that attitude?

that part wasn't really stated with an attitude,
but I see how it coulda been mistaken...
sry...

the famous and knowledgable are Pharrox, Kryal, Bero, and RTB
^that's how I ment it :(

sry bout the mis-understanding...

the thing that P's me is it's been months with no progress :/
(maybe weeks, but feels like months)


Title: Re: About DAE to MDL0 Conversion
Post by: SSJCerious on January 23, 2011, 09:42:56 AM
Well, its not like brawlbox was made in a week ya know? I understand wanting progress, but you cant expect fast paced work considering this has never been attempted before....i think.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 23, 2011, 09:57:24 AM
Well, its not like brawlbox was made in a week ya know? I understand wanting progress, but you cant expect fast paced work considering this has never been attempted before....i think.

but it has...
those 4 people (2 of them for fact)
know the MDL0 format...
once I learn how to read the format, I'll be able to write to it...

but there is one outstander who I'd like to contact...

William Hahne

he has a better converter (mesh-wise) than Pharrox


Title: Re: About DAE to MDL0 Conversion
Post by: SSJCerious on January 23, 2011, 10:16:05 AM
Wait...there are converters that already xist? LINK PLZ!!!!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 23, 2011, 10:37:31 AM
Wait...there are converters that already xist? LINK PLZ!!!!

MDL0 -> DAE
^if the hints in my last posts weren't enough

"once I learn how to read the format, I'll be able to write to it..."
my other post saying I'm asking the famous ones about the MDL0


I can't export to MDL0 yet
(don't know how to write the certain things)

my converter exports to a blank MDL0 file...
BJ's uses templates...

I take it he's just writing and remapping :/

hmm...
hey BJ...
instead of having a template selection in your GUI,
why not have an open dialog to open an MDL0 as a template...
(basically an MDL0 to write to)

btw, how are you going to implement multiple file formats without plugins??

for me,
the converter itself doesn't do any conversion at all...
the plugins are what convert the import file to a global format and
convert that format to the export file...

to add a filetype, just build a plugin...
note: OBJ and RAW are (export only) seeing as they contain only mesh data

yes, it would actually do conversion from mdl0 to mdl0

hmm...
just had an idea...

all those people who used FW's bone adder and got a messed up mdl0:
use import mdl0, export mdl0
you should get a smaller (working) file...

not only that, but padding will also be cut to an extent...
(a normal brawl file will convert to a slightly smaller filesize)

btw, nothing's put into typing yet =P
this is all from my head :P
but that's how it should work :)


Title: Re: About DAE to MDL0 Conversion
Post by: Naruto200Man on January 23, 2011, 10:51:39 AM
RAWER it should work like the Das donky's old version. Like have it go "import mdlo" (into the program itself) then have a button "export mdlo" and when you click export the different filetypes come up (OBJ Wavefront2, DAE, XML etc ) Then when you import a 3DS file or whatever you choose what character it is going over, this way it writes the new model file's bones the same way that X characters bones are listed.

like if it was on ZSS, than the program would write X bone on the new model to be 'located' (in the script file or whatever the core of the mdl0 is) in the same place as X bone on ZSS?

Like you know how ZSS's trans N bone is in a different "place"(in the file) than princess peaches?

This way you could easilly port characters even from other parts of brawl roster (mdl0 to mdl0) a little less flawlessly. Even if it was only a little less, that'd be something lol

Maybe take a look at how bb exports mdl0 files (I mean how it 'writes' the mdlo file seeing as it's a different file type than ARC BRESS Texture file etc?) that might help something along?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 23, 2011, 11:09:10 AM

BJ's uses templates...

I take it he's just writing and remapping :/

hmm...
hey BJ...
instead of having a template selection in your GUI,
why not have an open dialog to open an MDL0 as a template...
(basically an MDL0 to write to)

btw, how are you going to implement multiple file formats without plugins??


There's two dropdowns that you use to select the file types that you wish to convert between. Then the form figures out which value you chose in each dropdown and according to what you chose, it will use a different import and export class.

You use plugins and I use classes. They're basically the same thing, but mine are in the dll.

And my code doesn't have a template.
What I meant by using a template was opening an mdl0 to write to like you said.
Instead, I found it easier to just write a completely new mdl0. So I discarded the template idea.

I write the mdl0 file and then go back and rewrite stuff in the header(s).
Like I said, there's no template. I'm basically doing the same thing you're doing with the global tmp format, except inside the program.


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 23, 2011, 11:34:52 AM
Bj, need your help on teh chat!!


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 23, 2011, 11:37:48 AM

BJ's uses templates...

I take it he's just writing and remapping :/

hmm...
hey BJ...
instead of having a template selection in your GUI,
why not have an open dialog to open an MDL0 as a template...
(basically an MDL0 to write to)

btw, how are you going to implement multiple file formats without plugins??


There's two dropdowns that you use to select the file types that you wish to convert between. Then the form figures out which value you chose in each dropdown and according to what you chose, it will use a different import and export class.

You use plugins and I use classes. They're basically the same thing, but mine are in the dll.

And my code doesn't have a template.
What I meant by using a template was opening an mdl0 to write to like you said.
Instead, I found it easier to just write a completely new mdl0. So I discarded the template idea.

I write the mdl0 file and then go back and rewrite stuff in the header(s).
Like I said, there's no template. I'm basically doing the same thing you're doing with the global tmp format, except inside the program.

so that means I can do the same thing :/
but how??

each plugin contains 3 functions

MDL0:
info() #contains the information of the plugin and adds the filetype to the dialogs
import() #if '.mdl0', opens the mdl0 and converts it to global
export() #if '.mdl0', reads the global and converts it to mdl0 (you have to type the extension when saving)

how do I get rid of the tmp file??


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 23, 2011, 04:00:02 PM
You should store information from the import script in variables in the main script, and then send the variable info to the export script. That's all I'm doing...


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 23, 2011, 04:44:54 PM
You should store information from the import script in variables in the main script, and then send the variable info to the export script. That's all I'm doing...

I've thought of that idea,
then later realized it wouldn't work for everything needed...

unless there was a way to define dynamic vars...

I did think of lists though,
but building them would be a complicated process in itself...

let alone you may end up with lists like:
[[ [[[ ],[ ]],[ ]],[[ ],[ ]],[ ]],[[[ ],[ ],[ ]],[ ]]]


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 23, 2011, 05:24:34 PM
In C#, you can set a variable, write it to the mdl0, clear it and then do it again. That's what I'm doing for some stuff like vertices...


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on January 23, 2011, 05:26:27 PM
In C#, you can set a variable, write it to the mdl0, clear it and then do it again. That's what I'm doing for some stuff like vertices...

I assume you are using a loop, why not just grab an array and directly convert it?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on January 23, 2011, 05:31:09 PM
It splits the space between the floats in the dae file. Then it puts them in an array and converts each value in it to hex and then adds it to another list, which I'll then use to write to the mdl0.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 23, 2011, 06:08:46 PM
I see...
using vars on command...

I was thinking of something more like reading the file and storing it in seperate vars...
then reading from those vars and converting it to the required format :/


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on January 24, 2011, 03:05:50 AM
Well I would just read the bytes in selected offsets, put them in an array, loop through it, store the new vars in a new array and write them to the MDL0.

Essentially its what BlackJax96 said, I just misunderstood him.


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 24, 2011, 01:18:49 PM
Well I would just read the bytes in selected offsets, put them in an array, loop through it, store the new vars in a new array and write them to the MDL0.

Essentially its what BlackJax96 said, I just misunderstood him.

meh...
actually,
I think my template file may actually have a future use <_<

but still,
I need to figure out face-points before I can finish the obj export format :/
+ verts
+ normals
+ uv's
- faces
- groups (why do these even exist)

- materials (todo)
so I think I'll keep it... -_-


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 24, 2011, 08:40:12 PM
what's figured out about the MDL0 so far:

Definitions (what do these do??)
Bones (unconverted)
Verts
Normals
Colors (not sure how they're used)
UV's
Materials (figuring)
Shader_Config (figuring)
Objects (need to figure out face-points)
Textures (not sure how they're used)
Pallets (not sure how they're used)

other stuff:
nodes (what do these do??)
weights (unconverted)
anything I may have forgotten

the unconverted stuff is figured out ;)


Title: Re: About DAE to MDL0 Conversion
Post by: xxmasal22xx on January 25, 2011, 05:13:50 AM
what's figured out about the MDL0 so far:

Definitions (what do these do??)
Bones (unconverted)
Verts
Normals
Colors (not sure how they're used)
UV's
Materials (figuring)
Shader_Config (figuring)
Objects (need to figure out face-points)
Textures (not sure how they're used)
Pallets (not sure how they're used)

other stuff:
nodes (what do these do??)
weights (unconverted)
anything I may have forgotten

the unconverted stuff is figured out ;)

Nice, Tcll! Provided you get this all figured out in a reasonable amount of time, how long do you expect it will be before you have a beta? and would i be able to be a tester?


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on January 25, 2011, 05:34:15 AM
what's figured out about the MDL0 so far:

Definitions (what do these do??)
Bones (unconverted)
Verts
Normals
Colors (not sure how they're used)
UV's
Materials (figuring)
Shader_Config (figuring)
Objects (need to figure out face-points)
Textures (not sure how they're used)
Pallets (not sure how they're used)

other stuff:
nodes (what do these do??)
weights (unconverted)
anything I may have forgotten

the unconverted stuff is figured out ;)

Nice, Tcll! Provided you get this all figured out in a reasonable amount of time, how long do you expect it will be before you have a beta? and would i be able to be a tester?

It's mostly known stuff there, also there should be a community thread that helps get info on uncommonly known parts of the MDL0.

And, Tcll if we could arrange to chat at different times of the that would be good (you are on your chat at times that I can't be on the computer).


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 25, 2011, 12:59:39 PM
what's figured out about the MDL0 so far:

Definitions (what do these do??)
Bones (unconverted)
Verts
Normals
Colors (not sure how they're used)
UV's
Materials (figuring)
Shader_Config (figuring)
Objects (need to figure out face-points)
Textures (not sure how they're used)
Pallets (not sure how they're used)

other stuff:
nodes (what do these do??)
weights (unconverted)
anything I may have forgotten

the unconverted stuff is figured out ;)

Nice, Tcll! Provided you get this all figured out in a reasonable amount of time, how long do you expect it will be before you have a beta? and would i be able to be a tester?

It's mostly known stuff there, also there should be a community thread that helps get info on uncommonly known parts of the MDL0.

And, Tcll if we could arrange to chat at different times of the that would be good (you are on your chat at times that I can't be on the computer).

O.o
a community thread...
link plz...

I've put out so many MDL0 info threads and barely figured out anything from them :/

btw...
I'm on my chat:
Weekdays: after I come home from skool until bed time
Weekends: all day
otherwise I'm out with mom shopping, or at a friends or something...


Title: Re: About DAE to MDL0 Conversion
Post by: Roo on January 25, 2011, 01:30:59 PM
O.o
a community thread...
link plz...

Tech... reread what he just said...


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 25, 2011, 01:38:21 PM
O.o
a community thread...
link plz...

Tech... reread what he just said...

oh... XDD

derp :P

in that case, I guess I can say:
there's been about 3 to 5 info threads created
and about 2 to 3 sub-info threads

^there may be more :/


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 25, 2011, 02:42:56 PM
well...
here's (hopefully) the largest MDL0 discussion thread:
http://www.smashboards.com/showthread.php?t=296356

I hope this works :/

EDIT:
oops... lol :P

didn't realize the thread wasn't in a public place XDD

I've asked the mods if they could move it :)

EDIT2:
I've moved it myself >:/
http://www.smashboards.com/showthread.php?p=12060199#post12060199

heh...
now they have to delete that last thread XD


Title: Re: About DAE to MDL0 Conversion
Post by: ??_? on January 29, 2011, 05:23:29 PM
tcll have you made any further progress with materials?  And what about STDT stuff with stages?


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 29, 2011, 05:26:12 PM
tcll have you made any further progress with materials?  And what about STDT stuff with stages?

I'm not at material level yet on my converter...
I'm at faces right now (model)
next is bones and weights
then it's materials and shaders

and STDT??
I'm not familiar with brawl acros :/


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on January 29, 2011, 05:32:55 PM
Stage Trap Data Table.
It can modify the gimmicks in stages...


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 29, 2011, 05:47:14 PM
Stage Trap Data Table.
It can modify the gimmicks in stages...

ah...
that's prbly stuff dealing with physx and logic...
I'll have to look into that later :P


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on January 29, 2011, 06:01:49 PM
Stage Trap Data Table.
It can modify the gimmicks in stages...

ah...
that's prbly stuff dealing with physx and logic...
I'll have to look into that later :P
Really, it's just blind trial and error right now... :P


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on January 29, 2011, 06:04:13 PM
Stage Trap Data Table.
It can modify the gimmicks in stages...

ah...
that's prbly stuff dealing with physx and logic...
I'll have to look into that later :P
Really, it's just blind trial and error right now... :P
I'm assuming that stages have their own PSA like data that actually defines what the stage does. Has anyone tried opening a stage with Tabuu or something?


Title: Re: About DAE to MDL0 Conversion
Post by: ??_? on January 29, 2011, 07:19:42 PM
hitboxes and stuff can't be changed, its more of the timing of hazards, so STDT =/= to PSA for stages.
http://forums.kc-mm.com/index.php?topic=15618.0
f*cking sucks testing a stage 100+ times (set high value, test, set low value, test, set 0 value, test).


Title: Re: About DAE to MDL0 Conversion
Post by: DarkPikachu on January 29, 2011, 07:39:52 PM
lol
IDK how to work PSA...

but I do intend to build a logic editor of my own :/
(works similar to blenders logic bricks)

not only that,
but you'll be able to define your own logic bricks >:3

but it's just an idea right now <_<

I'ma try to implement a script editor in it too (rel files)


Title: Re: About DAE to MDL0 Conversion
Post by: Eternal Yoshi on January 31, 2011, 12:20:56 PM
The definitions of the stages and hitboxes are hard coded into the .rel of stages.
It hard to find and edit hitboxes, but it can be done.

/off=topic


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on February 23, 2011, 02:33:31 PM
Any progress on this stuff?


Title: Re: About DAE to MDL0 Conversion
Post by: TommoPuppy on February 23, 2011, 04:25:29 PM
Have you guys talked to RandomTalkingBush about it? I'm sure he knows a fair bit, because he's manually imported 3 TF2 models by going through a DAE file with a hex editor.


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on February 23, 2011, 04:42:50 PM
Have you guys talked to RandomTalkingBush about it? I'm sure he knows a fair bit, because he's manually imported 3 TF2 models by going through a DAE file with a hex editor.

I think he posted somewhere around here about materials/shaders...


Title: Re: About DAE to MDL0 Conversion
Post by: mnsg on February 23, 2011, 04:49:00 PM
I did take a look at the model dumps that RandomTBush got from Mario Sports Mix.  Of course, model dumps are useless if you can't figure out what the SMD and DAE files are for.

Now, I have no interest in doing model imports whatsoever, but this is still something to keep in mind.


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on February 24, 2011, 04:03:31 AM
Have you guys talked to RandomTalkingBush about it? I'm sure he knows a fair bit, because he's manually imported 3 TF2 models by going through a DAE file with a hex editor.

That is all common knowledge what he did, what isn't commonly known (or not known at all) are materials and shader definitions (and a few other things that aren't particularly vital to get a working model).

Well I haven't talked to Tcll in a while, I've been working on my converter every once and a while, Vile's been off messing around with his vertex injector and I think Mariokart's looking into the format on his own. It's all kinda unorganized right now, everyone's doing their own thing...

I think I'm done with the MDL0 format (or at least taking a break from it), I've been making a few tools to edit the internal data of retail PKG files.


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on February 24, 2011, 04:13:40 AM
You gonna release the vertex editor thing, though?


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on February 24, 2011, 05:05:31 PM
Ok here's some good news: I've managed to pinpoint the problem with Kryal's dae importer. I (sorta) know how his code works now, so I've managed to fix the error that's thrown when you import a dae. But now I can't save or export the mdl0 because the vertex offset, nodes length and another offset in the header is set to 0 and won't point brawlbox to the correct location to export/save the mdl0. So I'm working on that now. I'll be releasing a modset of Brawlbox v0.64 instead when I'm done. I fixed the floor too.


Title: Re: About DAE to MDL0 Conversion
Post by: Naruto200Man on February 24, 2011, 05:23:50 PM
So this will convert an mdlo to dae, and then from a dae to an mdlo I can use on ANY character? :l


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on February 24, 2011, 05:25:03 PM
So this will convert an mdlo to dae, and then from a dae to an mdlo I can use on ANY character? :l

Yeah...


Title: Re: About DAE to MDL0 Conversion
Post by: Naruto200Man on February 24, 2011, 05:34:42 PM
So basically that means the following once you get this thing up and running?

No more Trans N glitches
No more tiny shield glitches
No more thrown N/being thrown glitches
No more have n glitches?

^ for any model from any character? =3

If so, that would be amazing!
Also, what bone ID's would I use if I ported a character over to a diff character with this tool?


Title: Re: About DAE to MDL0 Conversion
Post by: VILE on February 24, 2011, 05:39:46 PM
So basically that means the following once you get this thing up and running?

No more Trans N glitches
No more tiny shield glitches
No more thrown N/being thrown glitches
No more have n glitches?

^ for any model from any character? =3

If so, that would be amazing!
Also, what bone ID's would I use if I ported a character over to a diff character with this tool?

It means a lot more than that...


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on February 24, 2011, 05:40:13 PM
Well every glitch you stated involves the bone structure, so you'd just have to rig your model in 3ds max according the character you want to port it over.

And it's no longer my own tool, I'm just editing Kryal's code since it's practically done.


Title: Re: About DAE to MDL0 Conversion
Post by: ForOhFor Error on February 24, 2011, 07:32:36 PM
When do you see this being finished?
Also, it will be able to import normal .DAE files, right?
'Cause I've got a .DAE of Outset Island, and it's just begging to be a stage :D


Title: Re: About DAE to MDL0 Conversion
Post by: BlackJax96 on February 24, 2011, 08:14:42 PM
I have no idea when it'll be done.
...and aren't all .DAE files normal? lol


Title: Re: About DAE to MDL0 Conversion
Post by: Naruto200Man on February 24, 2011, 08:34:42 PM
I have no idea when it'll be done.
...and aren't all .DAE files normal? lol

I think they mean DAE's not made by the ais thing...


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: BlackJax96 on March 12, 2011, 08:42:32 PM
Bump. Check title ^_^


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: Beyond on March 12, 2011, 08:51:14 PM
2 Words.


F*CK. YES! :srs:


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: SmashClash on March 12, 2011, 09:09:16 PM
Nice progress.


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: Velen on March 12, 2011, 09:26:27 PM
Holy sweet merciful [censored]!

That is KICKACE!

Too bad it's too big though...


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: BlackJax96 on March 12, 2011, 09:31:45 PM
Too bad it's too big though...

That can be fixed easily with 3ds max. You'd just have to scale it down and lay it on its back.


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: Naruto200Man on March 12, 2011, 09:34:32 PM
Oh sh---
Progress D:
PROGRESS! :D


Keep working your ass off on this, cause when it's done it'll be EPIC

Even more epic if you could use Chr0 from other games as well. Ya know, stuff like A combos and [censored] XP


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: Pik on March 12, 2011, 11:53:41 PM
This is fuckin' sweet


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: BlackJax96 on March 12, 2011, 11:57:59 PM
Hey can someone pm me any dae model with bones, I don't have any and I need one for testing. And it can't be one made by AiS or Brawlbox either.


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: TommoPuppy on March 13, 2011, 12:25:36 AM
Bump. Check title ^_^
Oh god oh god oh god oh god oh god YES!


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: ds22 on March 13, 2011, 04:46:44 AM
Wow, just wow.


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: Eternal Yoshi on March 13, 2011, 04:54:11 AM
Excellent. We are one step closer.


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: SSJCerious on March 13, 2011, 07:38:20 AM
AWESOME! To think of all the amazing stages to come..... :af:


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: KTH on March 13, 2011, 09:05:18 AM
Holly sh*t. Epic.


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: DarkPikachu on March 13, 2011, 12:49:51 PM
sry bout last night...
heh...

I ment to post the dae sooner, but got caught up in my viewer...
(checking out the RGB5A3 format)

well...
I'm on my wii right now (got company on my comp)

I'll post the link to the test dae here when I get on ;)

anyways... still nice progress :)

hopefully you'll get the bones imported.

also warning:
be carful of VGroups when scaling :|


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: BlackJax96 on March 13, 2011, 01:01:15 PM
sry bout last night...
heh...

I ment to post the dae sooner, but got caught up in my viewer...
(checking out the RGB5A3 format)

well...
I'm on my wii right now (got company on my comp)

I'll post the link to the test dae here when I get on ;)

anyways... still nice progress :)

hopefully you'll get the bones imported.

also warning:
be carful of VGroups when scaling :|

lol no problem, I got your dae. I'm having some problems with the bones "not being set to an instance of an object" :srs:


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: DarkPikachu on March 13, 2011, 01:06:56 PM
sry bout last night...
heh...

I ment to post the dae sooner, but got caught up in my viewer...
(checking out the RGB5A3 format)

well...
I'm on my wii right now (got company on my comp)

I'll post the link to the test dae here when I get on ;)

anyways... still nice progress :)

hopefully you'll get the bones imported.

also warning:
be carful of VGroups when scaling :|

lol no problem, I got your dae. I'm having some problems with the bones "not being set to an instance of an object" :srs:
yeh...
I was having the same problem in blender... heh

but I DL'd that dae just to figure out the difference between 140 and 141 bones...
(back when I was working on getting Pachirisu into blender)

it failed epically, but I just now found a random dae of pachi on my 2nd comp...

it imports like normal AIS imports :o
meaning all I have to do is replace the triangles in it and I should have a perfectly rigged model =D

get this:
rig imports with 140
model imports with 141
odd right >.>


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: ForOhFor Error on March 13, 2011, 01:40:52 PM
So... how close are we to a full converter?


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: Naruto200Man on March 13, 2011, 01:53:39 PM
So... how close are we to a full converter?

^This...
And also, what about a converter (from "dae to mdl0" I mean) for a model that works/is built for X character?


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: BlackJax96 on March 13, 2011, 02:22:23 PM
So... how close are we to a full converter?


Can't answer that question.

But check this out, the bone structure of Tcll's cube is built:
(http://i.imgur.com/nRXFu.png)

I haven't gotten it to preview just yet, and I'm still having some problems with other rigged models.


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: Legendary Super Mario on March 13, 2011, 02:36:04 PM
This is not an mdl0:

([url]http://i.imgur.com/5nJZo.png[/url])
([url]http://i.imgur.com/AuyQW.png[/url])

(Sorry, imgur uploaded the pix wierd >.>)

On to fix moar stuffz in teh codez...


Wow... that's impressive!


Title: Re: DAE to MDL0 Conversion: MESH IMPORTED!!! Check OP
Post by: DarkPikachu on March 13, 2011, 02:55:52 PM
Wow... that's impressive!

meh...
all I can say is GJ :)
at least it works :D

thing is, blender's 140 scripts don't export what they import :S


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 13, 2011, 09:56:05 PM
Okay, I got the texture references to work properly. For some reason though, on this model, the materials for the body and the ribbon didn't have texture references when they imported. I'll look into it, but for now: MOAR PROGRESS!

(http://i.imgur.com/Xx5HQ.png)
(http://i.imgur.com/n0Bka.png)
(http://i.imgur.com/AwOqH.png)
(http://i.imgur.com/tNBkX.png)
(http://i.imgur.com/Sks9e.png)

Done:
-Import mesh
-Add Texture References
-Build Bone Structure (still not viewable though)

To do:
-Fix all the "object reference not set to a instance of an object" errors :srs: seriously. That's it.

Some notes on importing:
-The model must be triangulated. It looks screwed up if it's in quads.
-Don't convert your model into one single mesh if it has multiple textures. Each texture/material has to be assigned to its own object.

I'm so close, I can smell it. The smell is a very SMELLY smell, that smells very...     smelly. :srs: /Mr. Krabs


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SmashClash on March 13, 2011, 10:16:35 PM
Oh my...
Awesome job, Blacky.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Legendary Super Mario on March 13, 2011, 11:08:36 PM
This is just getting better and better!  :kdance:


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 13, 2011, 11:12:11 PM
yea, that's really good :)

and as we discussed on the chat,
the dae's most likely messed up...

and that's just like people to triangulate everything...
creating triangles creates more data than leaving it set at polygons...

that's something I'm working on in my converter...
WHEN I ACTUALLY GET SOME FEEDBACK!!! >:(

srsly people, do you want this converter or not >:/
it'll take alot longer if I have to figure out the info and data myself.
if you want it, you'll tell me the needed info.
or at least specifically tell me where I can find it. <_<
note: this is dir'd toward knowledgable people

otherwise, you'll have to wait at least 2 to 3 years
(the converter isn't the only thing I'm dealing with)

so yea... I need help, and currently alot of it


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 14, 2011, 01:19:18 AM
To reiterate my nerdgasm from before, OH MY GOD!


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: VILE on March 14, 2011, 03:18:38 AM
Nice BlackJax, Kryals code was a total [censored] to read.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 14, 2011, 04:20:57 AM
I notice that the texture and bone tabs are empty.
But I'm pretty sure that that's the result of the "object reference not set to a instance of an object" errors, not the cause of them.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 14, 2011, 04:46:06 AM
I notice that the texture and bone tabs are empty.
But I'm pretty sure that that's the result of the "object reference not set to a instance of an object" errors, not the cause of them.
Yeah, from what I've seen trying to get TvC models to work (or just having poor luck with vertex hacking) that seems to be the case.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Roo on March 14, 2011, 08:00:28 AM
WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 14, 2011, 08:04:26 AM
WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!
Sure seems like it.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 09:44:26 AM
WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!

yeh...
I'm expecting alot of incompatability and poor conversion of the formats... :/

I'm not releasing my converter until it converts perfectly (to and from MDL0)
^this includes all primitives as well, not just triangles

I want the most hi-res compact mdl0 as possible when I convert >:3


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 11:31:07 AM
WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!

yeh...
I'm expecting alot of incompatability and poor conversion of the formats... :/

I'm not releasing my converter until it converts perfectly (to and from MDL0)
^this includes all primitives as well, not just triangles

I want the most hi-res compact mdl0 as possible when I convert >:3

I'd give feedback, but all that coding [censored] just looks like a bunch of random numbers to me, sorry bro xD

Keep up the hard work though =3


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 11:36:29 AM
I'd give feedback, but all that coding [censored] just looks like a bunch of random numbers to me, sorry bro xD

Keep up the hard work though =3

it's just simple algebra :P

the complicated part is putting it together correctly


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 11:40:53 AM
I'd give feedback, but all that coding [censored] just looks like a bunch of random numbers to me, sorry bro xD

Keep up the hard work though =3

it's just simple algebra :P

the complicated part is putting it together correctly

You're looking at someone who didn't even take PRE algerbra... >_>
lol
And getting the damn thing to work in brawl :l
AH imagine if you could get wolf link's model working in brawl with this :D
EPIC =3 link could finally have a badass final smash. (the triforce slash....god...link doesn't even USE his piece of the triforce in most of the games :l )


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Roo on March 14, 2011, 01:08:22 PM
WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!

yeh...
I'm expecting alot of incompatability and poor conversion of the formats... :/

Shun the nonbeliever!!


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 14, 2011, 01:42:30 PM
WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!

yeh...
I'm expecting alot of incompatability and poor conversion of the formats... :/

Hey, a step forward from .obj importing.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Roo on March 14, 2011, 01:51:05 PM
Hey, a step forward from .obj importing.

.OBJ's dont have bones, and therefore dont make viable character models. >_>


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 01:52:11 PM
You're looking at someone who didn't even take PRE algerbra... >_>
lol
And getting the damn thing to work in brawl :l
AH imagine if you could get wolf link's model working in brawl with this :D
EPIC =3 link could finally have a badass final smash. (the triforce slash....god...link doesn't even USE his piece of the triforce in most of the games :l )

I see...
well, do you understand this:
Quote
def function(value): #C becomes value
    return value+5

A = 3
C = A + 2
if C > 4:
    print function(C) #C = 10
else: pass

that's simple Python being used to simulate (3+2)+5 = 10

I find Python easier than most progging langs since the others don't even look like math
(especially C type codes (C, C++, C#, etc))
VB looks more like poetry being used to program ._.
JS is my 2nd easiest lang

yeh... there's quite a few diferent langs...
IDK why C# is preferred over C++ though...
I understand C++ better than C#
yeh... C# would have to be my hardest to understand :S
but Python tops all of them since it looks exactly like algebra,
and sometimes even calculus, which I havn't even taken yet :P

meh... I havn't taken geometry either,
yet I impressed my algebra teacher with vec3 programming :D

btw roo
that line belongs to Matt Styles
DON'T STEAL IT! >:3


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 01:54:53 PM
Hey, a step forward from .obj importing.

.OBJ's dont have bones, and therefore dont make viable character models. >_>

speaking of obj,
I'm adding that format to the imports list.
I've had a few ideas passed around to me
one of them being stage models

WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!

yeh...
I'm expecting alot of incompatability and poor conversion of the formats... :/

Hey, a step forward from .obj importing.

yeh...
but what good is it if half the mdl0 is messed up
(an error I'm trying to avoid)

basically,
I'm trying to do what Kryal failed at doing
(writing an mdl0 from scratch)
just in a different way...


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 14, 2011, 02:07:18 PM
@NaruZeldaMaster:

There's a python guide here (more of a textbook, really):
http://skylit.com/mathandpython.html

Or, if the math and logic there is too difficult, use the python docs:
http://docs.python.org/py3k/tutorial/

Though these are version 3. You may want something on 2.7, or something like that.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 02:19:30 PM
Hmm...I sort of got VB pretty well(not an expert, but basic stuff) since Game Maker uses that language.  I could book up on the code you're using and try to help, lol but chances are I'd F* it up somehow lol

now, testing and beta testing I can definately do. At least untill I learn the code itself and learn how to use it for what you're doing. I have nothing but time on my hands anyway, so learning this code (granted I learn it quickly enough) I could probably try to help with like, piecing together the different mdl0 parts and [censored]. Though I wouldn't be able to help out with the actual converter unfortunately.

Also, if this is possible you could try to make an automatic bone-rigger too for the exported mdl0

like, if you picked "Link" in a drop down list that appears when you "export" it, then the mdl0 exported would have the it's "bones" riged spasifically to work for Link's setup in brawl.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 03:47:47 PM
Hmm...I sort of got VB pretty well(not an expert, but basic stuff) since Game Maker uses that language.  I could book up on the code you're using and try to help, lol but chances are I'd F* it up somehow lol

now, testing and beta testing I can definately do. At least untill I learn the code itself and learn how to use it for what you're doing. I have nothing but time on my hands anyway, so learning this code (granted I learn it quickly enough) I could probably try to help with like, piecing together the different mdl0 parts and [censored]. Though I wouldn't be able to help out with the actual converter unfortunately.

Also, if this is possible you could try to make an automatic bone-rigger too for the exported mdl0

like, if you picked "Link" in a drop down list that appears when you "export" it, then the mdl0 exported would have the it's "bones" riged spasifically to work for Link's setup in brawl.

well first off, you'd need the revolution SDK
I found a torrent that gave me what looks like the basics...
IDK if it's all of itthough...
(doesn't seem to describe everything,
and alot of functions of the code seem to point nowhere...
but that might just be me (code in C++))

I don't think I have the link anymore <_<
but I still have the SDK at least :) (the rar file it came in)
I can send that...
IDK about posting it here,
even though it's a key part to understanding the mdl0 file
(won't tell you the mdl0 format itself, but it will tell you alot of needed info)

and second, to understand my findings of the mdl0,
you'd need HexEdit 3.0F (trial free) and my template.
I have a current version I'm working on, but you can get a previous version here:
http://brawlimports.proboards.com/index.cgi?board=resources

EDIT:
btw, your idea...
do you know how much of a pain that would be to code D:

(http://savant7.com/wp-content/uploads/2009/02/keyboardsmasher.gif)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 04:39:08 PM
lol I think I'll book up on the code itself first XP

Though, I thought you could make the DAE to mdl0 converter work with brawlbox? lol Cause brawlbox knows the bones and stuff of each character XP

It depends on how easilly I pick up on the way the code works that I can actually help.
No promises on when or even if I will though *nod*

I could still help test the current converter though if you have a completed one XD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 14, 2011, 05:05:46 PM
WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!

yeh...
I'm expecting alot of incompatability and poor conversion of the formats... :/

Shun the nonbeliever!!
SHUUUUUUUUUN!  :af:

Hey, a step forward from .obj importing.

.OBJ's dont have bones, and therefore dont make viable character models. >_>
That's his point.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 14, 2011, 05:22:46 PM
WHAWHAWHAWHAAAA?!?!?!?! ARE WE SERIOUSLY THIS CLOSE?!?!

yeh...
I'm expecting alot of incompatability and poor conversion of the formats... :/

Shun the nonbeliever!!
SHUUUUUUUUUN!  :af:

Charlie! Charlie! I have the amulet! XD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 05:25:09 PM
lol I think I'll book up on the code itself first XP

Though, I thought you could make the DAE to mdl0 converter work with brawlbox? lol Cause brawlbox knows the bones and stuff of each character XP

It depends on how easilly I pick up on the way the code works that I can actually help.
No promises on when or even if I will though *nod*

I could still help test the current converter though if you have a completed one XD

lol
no sir, not me
C# is my hardest lang...
C++ is my 2nd hardest

and btw
could you please put your furries in a spoiler
they're quite disturbung :srs:
I hate sex appeals and such (including furries)
thanx


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Roo on March 14, 2011, 05:47:41 PM
^ That, about the furries. D:


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 05:48:10 PM
>_>
I'm not changing my sig until I think of something else to do for it, or if someone makes my sig request..
If you don't like it, suck it...
Cause seriously dude it's meant as a joke lol

I mean the actual picture is a joke >_>
I happen to like anthros, at least kitsune and nekos, so yeah...whatever :P


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 14, 2011, 05:52:35 PM
I need to find a Collada 1.4.0 exporter for 3ds Max. It needs to be 1.4.0 though, not 1.4.1 :>.>:
I'll have to add 1.4.1 support to the parser later...


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 06:09:27 PM
>_>
I'm not changing my sig until I think of something else to do for it, or if someone makes my sig request..
If you don't like it, suck it...
Cause seriously dude it's meant as a joke lol

I mean the actual picture is a joke >_>
I happen to like anthros, at least kitsune and nekos, so yeah...whatever :P

alright...
uugh...

simply seeing one just makes my eyes bleed is all
and if doing a sex appeal or something, makes my brain rot DX

so yeh...
I mean no offence by anything though :)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 06:19:06 PM
I need to find a Collada 1.4.0 exporter for 3ds Max. It needs to be 1.4.0 though, not 1.4.1 :>.>:
I'll have to add 1.4.1 support to the parser later...

make sure to add everything...

and heh...
go figure...
I have the same prob with blender's 140 importer on an AIS conversion
(only the bones import)

but when importing with 141, it looks like this:
(http://lh5.ggpht.com/_IteXPmeC6ek/TGRu4I-4niI/AAAAAAAABms/jfbMNPAOLWY/s320/ness.jpg)

but here's an AIS conversion with the 140 importer:
(http://lh6.ggpht.com/_IteXPmeC6ek/TUWYZe3PPKI/AAAAAAAACZY/GlwBp-tJYfc/s480/bone_struct_pachi.PNG)
^take a guess at who that is :D

yes, AIS exports to 141
Will's exports to 140


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 14, 2011, 06:46:24 PM
>_>
I'm not changing my sig until I think of something else to do for it, or if someone makes my sig request..
If you don't like it, suck it...
Cause seriously dude it's meant as a joke lol

I mean the actual picture is a joke >_>
I happen to like anthros, at least kitsune and nekos, so yeah...whatever :P
It's not so much that it's unattractive BECAUSE it's an anthro character. It's because it looks FREAKING RIDICULOUS with that ultra-human face, overly bright orange and retarded, messed up tail. Is that the "joke?" Because I'm not laughing.

Like, there are much more tasteful options out there, such as, you know, NOT having a sig, perhaps? It's not like you need to have one. Look at me. All I have is my Steam and BrawlVault sigs, in a slightly elegant, minimalist layout. Nothing extravagant, because it's not necessary to fill up half the page (on a 1080p HD screen even) with with crap.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 07:04:02 PM
There's still no reason to B* about it >_>
If you don't like it, fine, but if you're going to argue about it, you're better off not saying anything at all.
There's more than one kind of anthro you know, Simi-anthro and Completely Anthro
I'd explain the differences, but they're very minor and you probably don't give a [censored] anyway.

Also...that's red...not orange....>_>

If the size itself is the issue, why are you not complaining about Tolls sig as well? >_> his is about the same size as mine....

I'm not responding to any further comments about my signature, because I can already tell arguing with you will be like talking to a brick wall. I've already resized it to standards so quit complaining.

@ Toll: Yeah, I may make a different pic, it's still gonna have sex appeal, but at least you respect my opinion. (unlike some people >_>  ) and the pic will be of a much cuter character anyway. If I can get it to work, it's  a naruto oc who's the "reincarnation" of the original naruto.

Also, I'm going to guess and say that's Amy's model from one of the early 3D sonic games...I'd recognize that haircut anywhere lol even in choppy polygon form XP


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 14, 2011, 07:11:51 PM
All you have to do is get AdBlockPlus and have it block the image.
:D
It's what I do, instead of [censored]ing about it.

So, back on topic... any clue what the errors are being caused by?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 07:21:31 PM
All you have to do is get AdBlockPlus and have it block the image.
:D
It's what I do, instead of female doging about it.

So, back on topic... any clue what the errors are being caused by?

Exactly, he could do that instead of starting an unneded flamewar >_>
Though I may change my sig pic anyway, if I can get the render to work lol
It'll still be sexy, but in more of a cute way  :l

On topic, I have no idea...then again, I don't know [censored] about programing or algerbra so lol *facepalm*


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 08:05:58 PM
All you have to do is get AdBlockPlus and have it block the image.
:D
It's what I do, instead of female doging about it.

So, back on topic... any clue what the errors are being caused by?

yep
talked with him on my chat (BJ96)

it's the common collada 141 format
Kryal progged brbx for the uncommon 140 format
so yea

btw, <3 your ava ^_^

and NZM...
I wasn't asking you to get rid of or change anything...
just simply put the indecent exposures into a spoiler is all
nothing big there (just adding the spoiler)

I'm not trying to bomb or flame you or anything...
and I at least get that the pic was a joke for someone else >_>
I mean... really tommopuppy :srs:
that bomb was unneccesary

sry...
I'm talking like I'm admin here XD
I need to stop that...
although I am admin of 4 forums, including my own
@NZM: if ever you're interested in joining, I do have a rule about those pics...
however, I have a friendly forum (mild fllamming and crap (no trolling))

anyways...
I have to stop derailing this topic so...
that's the current errors for now >_>

EDIT:
sry bout the boast :P


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 08:14:16 PM
lol
I know about HardcoreBrawlHacks XP in ur sig.

And I'm just changing it cause I want to lol I kinda wanna advertize a super fun naruto rp I'm in, and she's(the character who'll be in my sig) one of my oc's in that rp so yeah.

Also...what sensitive parts? lol that's a top and a short skirt XP

And um....I did guess the model in the pic...Amy? XD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 08:22:35 PM
lol
I know about HardcoreBrawlHacks XP in ur sig.

And I'm just changing it cause I want to lol I kinda wanna advertize a super fun naruto rp I'm in, and she's(the character who'll be in my sig) one of my oc's in that rp so yeah.

Also...what sensitive parts? lol that's a top and a short skirt XP

And um....I did guess the model in the pic...Amy? XD

I see...
so I take it she's something similar to the 9 tailed fox?? *interested*

oops... my mistake...
IDK what to call it, but it's the position she's in, along with the text...
that's what I ment... heh

and the pic is actually the bone rig of Pachirisu :D
hint: take the link to the pic and delete the /s480
and look at the bottom of the rig :P (the first bone)

EDIT:
wait...
ignore that first comment :P
you already stated that pic, and havn't changed yur sig yet... heh


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 14, 2011, 08:37:55 PM
There's more than one kind of anthro you know, Simi-anthro and Completely Anthro
I'd explain the differences, but they're very minor and you probably don't give a [censored] anyway.
>TommoPuppy
>Posts kemonomimi art on his DA
>Has a FurAffinity account


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: dark sonic 19 on March 14, 2011, 08:42:33 PM
Can i help you guys make the dae thing work i can find some mdl0 or bone data somewere


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 08:45:16 PM
There's more than one kind of anthro you know, Simi-anthro and Completely Anthro
I'd explain the differences, but they're very minor and you probably don't give a [censored] anyway.
>TommoPuppy
>Posts kemonomimi art on his DA
>Has a FurAffinity account

comon dude...
just leave it alone...
I've already said I'd deal with it...
and I was the one who started this mess...

and I've ended it...
so stop continueing or else you're gonna be the one getting flammed

@DS:
it's not that simple...
we need dae 140 files...
if you wanna help add 141 support, that'd be fine,
but you need to know C# and what not


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 14, 2011, 08:54:54 PM
Cut the furry crap. You're all creepin' me out :srs:


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 14, 2011, 08:57:12 PM
Cut the furry crap. You're all creepin' me out :srs:
we just did


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 09:02:40 PM
That's cause I haven't even MADE the pic yet silly :l
I'll fix it tomorrow lol
And she's just a reincarnation of naruto, thoough kyubi is inside her she ain't got none of narutos skills/jutsus (it's in a modern-time world where the anime naruto doesn't exsist, instead the modern world happens after naruto world ends (basically the naruto/naruto shippuden world replaced the dinasours pretty much lmao) The reincarnations get the jutsus/memories/abilities of their former selves over the course of the rp.) except maybe the Harem jutsu.

I also have the reincarnation of Tsunade, who's a school nurse lol



Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Velen on March 14, 2011, 09:36:04 PM
>_>
I'm not changing my sig until I think of something else to do for it, or if someone makes my sig request..
If you don't like it, suck it...
Cause seriously dude it's meant as a joke lol

I mean the actual picture is a joke >_>
I happen to like anthros, at least kitsune and nekos, so yeah...whatever :P

alright...
uugh...

simply seeing one just makes my eyes bleed is all
and if doing a sex appeal or something, makes my brain rot DX

so yeh...
I mean no offence by anything though :)

All it means is you're intolerant.

Yeah I went there. >_>
/me leaves the thread.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 10:23:23 PM
It means I have a right to my own opinion >_>
And my own signature >_>


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: dark sonic 19 on March 14, 2011, 10:26:08 PM
can we talk about the daes not about this guys sig come on people :>.>palm:


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 14, 2011, 10:45:10 PM
can we talk about the daes not about this guys sig come on people :>.>palm:
>_>
Exactly my point <_<


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Tempo_ on March 14, 2011, 11:28:06 PM
You know, for a network that brings all sorts of people together to create the most diverse community in the world, you would think the members would be more tolerant of other views.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: VILE on March 15, 2011, 01:17:17 AM
This thread exploded when there was a mesh import.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: xxmasal22xx on March 15, 2011, 06:20:24 AM
So, what exactly will mdl0 to dae to mdl0 mean for us?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 15, 2011, 06:50:45 AM
So, what exactly will mdl0 to dae to mdl0 mean for us?
It means you can import any model


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 09:09:33 AM
It means I have a right to my own opinion >_>
And my own signature >_>

that was dird to me dude...
I'm intolerant or whatever... not you
btw, that's better XD

anyways...
So, what exactly will mdl0 to dae to mdl0 mean for us?

convert mdl0 to dae (140) and then back to mdl0 <- simple enough
be sure the dae version is 140 not 141

on another note
I think this is the first thread I'm on here that ever exploded over night :|

and on a last note,
I've finally networked my 2nd comp...
but I hope to get my 3rd and 4th networked when I get them working
anyways...
the point of that being I should be able to get alot more work done in less time...
switching between desktops to read something and switch back can really be a pain :S


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 02:10:39 PM
well... here's my main program:
http://www.pasteit4me.com/2309014
multi-reference importing doesn't work right

here's my MDL0 plugin (what I have so far):
http://www.pasteit4me.com/2309015

and here's my OBJ export plugin (to test models):
http://www.pasteit4me.com/2316003
^didn't comment very much here...

fileconvert_2.0b/plugins/
^program _____ ^plugins :P


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 15, 2011, 02:32:06 PM
So, what's working in it, so far?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 15, 2011, 02:47:07 PM
And how does it work?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: libertyernie on March 15, 2011, 02:47:37 PM
YOUR THREAD A SPLODE


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Roo on March 15, 2011, 03:22:00 PM
YOUR THREAD A SPLODE

BaAaAaCk OofF, BbaByYyYyY


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 04:10:53 PM
So, what's working in it, so far?

http://tcll5850.proboards.com/index.cgi?board=umcrel&action=display&thread=85 <- need to UD a little
mdl0 plugin: http://tcll5850.proboards.com/index.cgi?action=display&board=umcrel&thread=82&page=1

And how does it work?

how to use:
1: run the program
2: select the import file (check the extension)
3: if referenced by more than 1 plugin, select the type of conversion to do (not fully implemented yet)
 - else skip this step
4: type, or select the export file (type the extension)
5: same as 3

and wait for the program to finish :)
that's it.

How it works:
takes the import file and compairs the extension to the returned extension from a list of plugins,
once the conversion type is set, converts the file to my global format 'global.tmp'
then converts the tmp to the export file which is set by the same method as the import file.
note: files are selected before conversion begins.
also, cancelling at any time closes the program :) (before conversion)

for info on my tmp format, refer to here:
http://tcll5850.proboards.com/index.cgi?board=umcrel&action=display&thread=81
^need to UD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 15, 2011, 04:24:35 PM
You run it with Python?
And if so, with what program in the Python folder?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 04:33:33 PM
You run it with Python?
And if so, with what program in the Python folder?

just python

using 2.6
but can run on 2.5 and not sure how many versions lower

and no add-ons

I use Tk :)

I hate add-ons like wxPy or whatever


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 15, 2011, 04:36:28 PM
No addons necessary?
Awesome.
And, a coding question:
Do you get the extension by splitting the file name string at the period?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 04:38:17 PM
btw, forgot to notify about backups

in the program directory: fileconvert_2.0b
create the folder 'backups'

so there should be:

fileconvert_2.0b/
    plugins/
        brawl.py
        obj.py
    backups/
        *import file*.tmp
    UMC.py (or .pyw)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 04:39:18 PM
No addons necessary?
Awesome.
And, a coding question:
Do you get the extension by splitting the file name string at the period?

yep imfl.split('.')[-1]

imfl and exfl are my import and export vars
just read the comments :)
I think I stated it... >.>

note: I don't actually open the file until the plugin is selected...
that's why I have an info function:

#mdl0 plugin v0.2b
def inf(support,im_types,ex_types,SC_types): #plugin information
    support.append("*.mdl0") #supported import type
    im_types.append(('Brawl','*.mdl0')) #individual import type
    #ex_types.append(('Brawl','*.mdl0')) #individual export type
    SC_types.append(['mdl0','Brawl','im_brawl','ex_brawl'])

the SC_types are new


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 15, 2011, 04:41:30 PM
imfl?
I'm guessing that stands for 'import file'.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 04:47:44 PM
imfl?
I'm guessing that stands for 'import file'.

yep

but in the plugins, you'll find 'fr' and 'fw'
'FileRead' and 'FileWrite'

also

in the inf function

'support' is for the supported filetypes
'im_types' and 'ex_types' are individuals
'SC_types' is for the Safety Check window

the SCW is for multiple plugins on the same format.
it shows a list of buttons for selecting the proper plugin...

I can't seem to get the command to work on them though >_>


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 04:54:29 PM
hey 404

you seem to be pretty interested...
1: how much do you know about Py?? (hopefully more than me)
2: would you like to help out??


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 15, 2011, 04:58:34 PM
Is this a plugin for 3DS max?
Or does it simply convert the file itself?
I'm cornfused D:


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 05:00:31 PM
Is this a plugin for 3DS max?
Or does it simply convert the file itself?
I'm cornfused D:

it converts the file itself...

the plugins are for my converter...
but the plugins are what do all the work of actually opening the file...

def impt(imfl,imSC,debug): #import function
    if imfl.split(".")[-1] == "mdl0" and imSC == 'Brawl': #check extension + safety check (requitred)
        fr = open(imfl,'rb') #open mdl0 file
        fw = open('global.tmp','w') #global template format file

notice the safety check  var as well... 'imSC'


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 15, 2011, 05:40:43 PM
hey 404

you seem to be pretty interested...
1: how much do you know about Py?? (hopefully more than me)
2: would you like to help out??
1. Just the basic commands, a few math functions, the while loop, and text file reading/writing. I'm in a programming course (which is available to freshmen at our school, which is awesome)
2. Sure, but I don't know much about the format. Or anything about 3D model files, really XD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 15, 2011, 05:47:27 PM
Ah okay....
Do you think you could maybe do a mdlo fixer?
Like you know the model fixing thing that fortwaffle made? Except in one program?
It's made in game maker, so you'll probably need to study VB, either that or look at how it works and make it in ur own code XP


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 15, 2011, 05:49:15 PM
There IS a text tutorial for fixing MDL0s, you know.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 15, 2011, 05:50:04 PM
If this is more advanced, could you (Tcll) possibly assemble this as an .exe?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 15, 2011, 05:54:10 PM
what's wrong with .py?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 05:58:35 PM
hey 404

you seem to be pretty interested...
1: how much do you know about Py?? (hopefully more than me)
2: would you like to help out??
1. Just the basic commands, a few math functions, the while loop, and text file reading/writing. I'm in a programming course (which is available to freshmen at our school, which is awesome)
2. Sure, but I don't know much about the format. Or anything about 3D model files, really XD

a course... lucky *jelous*
my school's filled with a bunch of retards for teachers :srs:

and about 3D formatting, when I started, I thought I knew everything...
but when it came down to it, all I knew about was verts, normals, UV's, and faces(obj)
now i've been shown a whole new world due to the mdl0

and for helping out,
I'll post the project on google code
you can help out and add notes or whatever there :)

yeh I had a hard time figuring out the for loop as well
but it's as simple as this:

number = [1,3,5,3,7,9]

for  n in  number:
    print  n
>>>
1
3
5
3
7
9

or you can do this:

for  I, n in  enum(number):
print  str(I) + ' ' + str(n)

>>>
1 1
2 3
3 5
4 3
5 7
6 9

I'm doing somethig similar to this for the SCW buttons :D


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 06:00:37 PM
If this is more advanced, could you (Tcll) possibly assemble this as an .exe?

there is a way to do it... (compile py into exe)
but I'm not exactly sure how :/

still though...
the py acts as an exe, so it's really NBD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SmashHackers on March 15, 2011, 06:12:23 PM
Im unfamiliar with python or how to use this so can anyone explain the basics?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 06:16:20 PM
Im unfamiliar with python or how to use this so can anyone explain the basics?

well first off, do you want to prog, or do you just want to use it??

if you want to program, I've found a guide that taught be the basics well :)
but I forgot where it was...

I'll edit this post when I find it...

EDIT: found it
http://www.sthurlow.com/python/lesson01/


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 15, 2011, 06:37:01 PM
I really don't know anything about 3D model files.
Anywhere you can point me to with some notes on them?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 06:43:53 PM
I really don't know anything about 3D model files.
Anywhere you can point me to with some notes on them?

well obj is about the easiest to understand

vert: #3D point position
v X Y Z

normal: #used for face direction
vn X Y Z

uv: #texture position on face
vt X Y

facepoint: #faces connect between verts/uv's
f v,vn,vt #point
f v,vn,vt  v,vn,vt #line
f v,vn,vt  v,vn,vt  v,vn,vt #tri
f v,vn,vt  v,vn,vt  v,vn,vt  v,vn,vt #quad
f v,vn,vt  v,vn,vt  v,vn,vt  v,vn,vt  v,vn,vt ... #polygon
(indexes)

so that's the basic model...

I'm still kinda just getting started on materials and shaders,
so I can't really explain anything yet :/

I'm afraid IDK of any good guides yet...
but wiki is ok on 3D stuff :/


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 15, 2011, 07:12:35 PM
Update on the brawlbox mod:
I'm going to edit the parser to support 1.4.1 dae models, which are the most common collada version, after I fix everything else. It might take a while but it'll be much more convenient because I literally cannot get a good collada 1.4.0 exporter and the ones I have now won't export correctly or import correctly. I have no idea why Kryal decided to set up the parser for 1.4.0...

You guys will have a really hard time getting the models in the right format if I don't do this, and that practically defeats the purpose.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 15, 2011, 07:39:38 PM
Sounds like everyone's getting where they want to go with their program @+@
Yay for us who suck at vertexing :D
And model hacking....lol


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 07:59:07 PM
Sounds like everyone's getting where they want to go with their program @+@
Yay for us who suck at vertexing :D
And model hacking....lol

that would be one of many reasons I'm doing this :D

but srsly...
why simply vertex, when you can dev a completely new char >:D

how bout my char Riku, once I get good at modelling <:(
I'm gonna try to push the mdl0 file to it's limits while using only a small amount of data >:D
how's that sound >:)

eg: rendering actual fur or hair should take less data than using multiple meshes as brawl does
(take a look at the ice climbers hoods)
not only that, but it'd look more hi-res :D

EDIT:
honestly,
if I had the time and what not <_<
I could shrink brawl down by possibly 2GB at most (excluding movies, music, and dummy files)
movies take up ~3GB
dummy files take up ~1.3MB
not to mention making it look alot better :D

EDIT2:
I could prbly get ~0.05GB (50MB) out of the music


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 15, 2011, 08:56:46 PM
lol

If you do that then yeah
Also we need obj format support for the converter too :D


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 09:12:25 PM
lol

If you do that then yeah
Also we need obj format support for the converter too :D

yeh... I intend to make it importable...
got quite a few good ideas passed on to me :)

I'm also gonna try to add advanced conversion methods...
that way it's not just triangles or tri's + quads

I'm gonna try to get linestrips, tristrips, trifans, and quads
(quads if all triangles)
that'll be quite a pain to program...
but I won't regret it when it saves me a ton of space :D

here's an example:

tristrip containing 5 triangles (1 mismatch):
------
------
------
------
------
------
------
------

^8 lines (can be 7 without the mismatch)

now, 5 triangles:
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----

^15 lines

see the difference :P


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 15, 2011, 09:16:43 PM
lol

If you do that then yeah
Also we need obj format support for the converter too :D

Kryal already has that set up to export, it's not done yet and I don't have time to fix it atm


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 09:24:55 PM
lol

If you do that then yeah
Also we need obj format support for the converter too :D

Kryal already has that set up to export, it's not done yet and I don't have time to fix it atm

well yea...
DAE's can handle tristrips, no matter what version they are...
or do you mean conversion from triangles??

anyways...
yea... DAE's support them, OBJ's don't

btw, I'm gonna add support for my own personnal file format :D
the .hxo file

the extension stands for (HeX Obj) and the file will be just like obj format,
but transform the floats and indexes and such into hex...
not to mention the addition of bones or anything else :)

note: this is a personnal format meaning I may use it in my own games
but not games for my system <.<
only simple PC games or whatever

EDIT:
O.o wait... derrrrp
that wasn't a reply to me... :|
whatever >.> <.<


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 15, 2011, 09:37:19 PM
lol
Toll had a brain fart :P


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 15, 2011, 09:45:36 PM
why do you keep calling me Toll...
it sound like troll X( (which I am not)
it's Tcll (c not o)

I got my name from being called 'Tech' in 4th grade
but it got old <_<

now I'm called Nintendo or TC

but my tag will always be Tcll or "TeCh 2" if you extend it :/

I mean...
look at the style of the 'Tcll' in my sig...
as if that don't look technical enough for ya... heh

EDIT:
it's actually the desktop BG of my 2nd comp :P
(extremely large)

yeh...
I just kept using the clarify option in PSP7 and ended up with this neat effect :D
IDK how many times I used it, then doubled the image size... heh


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: VILE on March 16, 2011, 01:32:37 AM
Just so everyone here knows making an entirely new model isn't as easy as you may think >.>

Id just like to get a show of hands of who can actually model something from scratch, unwrap, texture, create a working skeleton and skin.

Because by how everyone is talking they are making it seem like making a new model is easier than vertex editing.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Oshtoby on March 16, 2011, 06:44:50 AM
Just so everyone here knows making an entirely new model isn't as easy as you may think >.>

Id just like to get a show of hands of who can actually model something from scratch, unwrap, texture, create a working skeleton and skin.

Because by how everyone is talking they are making it seem like making a new model is easier than vertex editing.
What about people who just want models from other games to be imported? Like rips of Melee stages/characters?

I don't have very many plans; I just want Melee's Mewtwo model (which I have [no bones]) rigged with Lucario's Brawl skeleton (with the tail stretched to fit Mewtwo's tail before anchoring), and Melee's Roy Model (which I have [once again, no bones]) rigged with Brawl Marth's skeleton.

I am going to ask a buddy of mine who went to school for digital animation to teach me how to make/anchor a working 3D model skeleton. This era in Brawl hacking should be fun.

On a side note, was there not a way to extract the bones of a Brawl character? Like, didn't the pre-beta model extractor by Pharrox do that?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: xxmasal22xx on March 16, 2011, 06:56:40 AM
Ok, I am past confused.....lol.

In order to run the program with the mdl0 plugin and the obj exporter, what do i need to do/have?

Can someone explain?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 16, 2011, 07:33:25 AM
Just so everyone here knows making an entirely new model isn't as easy as you may think >.>

Id just like to get a show of hands of who can actually model something from scratch, unwrap, texture, create a working skeleton and skin.

Because by how everyone is talking they are making it seem like making a new model is easier than vertex editing.

I can easily rig, but my modelling skills officially suck...
not to mention applying VGroups or I mean weights... (weights are what's in the 3D formatting terms)
(VGroups are blender terms)

I have completely made a char though...
(took the blender gingerbread man tut a step further and added logic and made it work)

but if I had to vote between vertexing and starting from scratch...
well... depending on the edit being done,
 it can be from easy to about the same

I'd have to say vertexing can be easier,
if you're not doing a vertex that requires you to change the weights or the rig...
then it can be just as much of a pain as starting over from scratch...

Just so everyone here knows making an entirely new model isn't as easy as you may think >.>

Id just like to get a show of hands of who can actually model something from scratch, unwrap, texture, create a working skeleton and skin.

Because by how everyone is talking they are making it seem like making a new model is easier than vertex editing.

What about people who just want models from other games to be imported? Like rips of Melee stages/characters?

I don't have very many plans; I just want Melee's Mewtwo model (which I have [no bones]) rigged with Lucario's Brawl skeleton (with the tail stretched to fit Mewtwo's tail before anchoring), and Melee's Roy Model (which I have [once again, no bones]) rigged with Brawl Marth's skeleton.

I am going to ask a buddy of mine who went to school for digital animation to teach me how to make/anchor a working 3D model skeleton. This era in Brawl hacking should be fun.

On a side note, was there not a way to extract the bones of a Brawl character? Like, didn't the pre-beta model extractor by Pharrox do that?

first off...
stop thinking about using other chars rigs.
I'm porting chars over chars while still being able to use the char...
(well trying to anyways (if ever TSG finishes his bone tree editor))

I want to get melee Pichu over Pikachu along with Pachirisu...
I'm almost finished with Pachi...
all I need are some dummy bones to fill in the places of the required bones...
here's my planned rig for him:
http://brawlimports.proboards.com/index.cgi?action=gotopost&board=123145&thread=6&post=31
(the yellow bones need to be added, the green bones are his)

Ok, I am past confused.....lol.

In order to run the program with the mdl0 plugin and the obj exporter, what do i need to do/have?

Can someone explain?

all you need is Python 2.5 at least

and the program in the correct folders...
links:
here's my main program:
http://www.pasteit4me.com/2309014
multi-reference importing doesn't work right

here's my MDL0 plugin (what I have so far):
http://www.pasteit4me.com/2309015

and here's my OBJ export plugin (to test models):
http://www.pasteit4me.com/2316003
^didn't comment very much here...

folders:
fileconvert_2.0b/
    plugins/
        brawl.py (mdl0 import (export will be added))
        obj.py (import will be added)
        UMC.py (backups plugin)
    backups/
        *import file*.tmp
    UMC.py (or .pyw) (main program)

I'm such an idiot... XDD
the backups I mantioned earlier... how are you supposed to even use them :P
well here's the plugin for that: (UMC.py)
http://www.pasteit4me.com/2315004

note, the backups are in my format,
so if ever you want to look at them, feel free :)

also, keep in mind this is only a dummy release...

it'll be quite alot better and also have more plugins and an installer when I actually release this.
along with a guide to making your own plugins :) (why I called it UMC)

you could pretty much compair this program to winamp...
the filetype/conversion is supported by the plugin ;)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 16, 2011, 09:53:40 AM
OT:
can your text editor do this: :af:
(http://lh5.ggpht.com/_IteXPmeC6ek/TYDXBMrETsI/AAAAAAAACio/DVYJubaJGhU/s1024/NP%2B%2BFTW.PNG)
^I'm editing 3 places at once in my mdl0 template for HexEdit

Notepad++ FTW

Q: why am I using a text editor instead of HexEdit's template manager?
A: HexEdit can't copy/paste IF statements (only DATA statements in an edit block)

EDIT:
yeh...
I just found this extremely useful feature :P
and I just had to be a little kid and post about it :laugh:


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 17, 2011, 09:27:37 AM
btw guys,
if you make any changes to my code, and actually get something working,

please let me know
you will get credit for your change :)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Ls777 on March 18, 2011, 11:05:24 AM
Just so everyone here knows making an entirely new model isn't as easy as you may think >.>

Id just like to get a show of hands of who can actually model something from scratch, unwrap, texture, create a working skeleton and skin.

Because by how everyone is talking they are making it seem like making a new model is easier than vertex editing.

me! me! I can do that!

not that im interested in modeling characters, im more interested in stage stuff :)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 18, 2011, 11:13:04 AM
well...
IDK what the problem is for my converter...

I've written a little debug info for the converter on the obj plugin...
it's not that at all... :/

here's the log:
Quote

Objects:
[1, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 2, 0][3, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0][1, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0][2, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0][1, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0][2, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0][1, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0][2, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0][1, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0][2, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0][1, 0, 0, 0, 0, 0, 0, 0]
^mdl0 log info
['<', 'faces', 'polygon0', 'v', '', '', '', '1760|1623|1953/46769|21|12289/46129|45261|5809/1828|1823|1830/48561|21|12289/46129|45261|48817/1862|1892|1863/1896|1909|1906/1841|1840|1883/24753|114|12289/46129|45261|48817/112|8193|12321/45129|49585|97/10241|6953|33838/29573|191|862/849|815|816/32433|99|12289/46129|45261|48817/1002|1001|1000/1011|284|862/843|817|818/26033|100|12289/46129|45261|26545/112|8193|12321/45129|33201|102/10241|6953|33838/2949|104|830/1001|850|1000/836|832|835/821|822|823/11185|30|12289/46129|45261|26545/25|8193|12321/45129|33201|44/10241|6953|33838/7813|104|1124/136|135|138/1119|1122|1120/1114|122|121/1106|1107|1108/113|129|114/120|128|123/10673|1|12289/46129|45261|19889/132|8193|12321/45129|10417|42/10241|6953|33838/7813|78|1468/1475|1476|1477/1512|1510|1511/1513|1495|1497/1496|1498|1492/1487|1486|1485/1488|1103|1478/1431|1344|1451/9222|9222|9222/9222|9222|9222/9222|9222|9222/9222|9222|9222/13|558|557/560|559|588/549|573|548/142|140|141/143|1413|1084/337|1083|1441/1396|1446|1089/1420|1088|1423/14598|13061|14598/13829|9221|8453/9221|8453|7686/11526|11527|10/565|537|578/538|577|576/538|172|170/115|112|116/117|118|510/524|512|13061/12293|13829|8453/8453|10757|11525/8|140|548/145|551|542/543|542|1408/1407|1414|1437/1438|1439|9222/9219|9222|9219/9222|9219|7/145|542|542/543|551|550/499|507|500/531|545|544/9219|9219|9219/9219|9219|9219/7|532|540/539|541|651/584|508|547/509|546|533/541|9219|9219/9219|9219|9219/9219|7|586/558|587|560/652|588|114/144|516|513/515|514|13057/13057|14595|14595/9219|9219|7/184|516|574/567|575|566/484|138|534/505|533|530/9219|14598|9222/14598|9222|9222/7|176|176/144|144|145/144|777|1063/1088|1062|1423/12289|11522|12289/11521|10753|6/551|548|550/549|555|337/1441|1440|1447/14598|14598|9222/9222|5|574/544|545|546/542|506|140/139|14595|14595/13057|13057|5/557|555|559/549|1421|1423/1426|1424|9987/7682|9219|9217/5|176|176/144|144|125/144|113|114/9219|9219|9219/9219|10|555/550|543|546/544|547|173/143|141|23217/73|12290|49201/45273|10673|44/8193|15393|45141/54705|91|10241/9257|33847|901/8|665|220/682|552|681/590|660|1543/1544|1546|1545/1477|1478|9991/8455|10759|11527/11527|6|144/140|143|617/141|1524|1547/1548|1549|1529/10755|8451|9987/9987|5|144/143|140|617/1548|1529|1429/30769|45201|10929/252|12290|58401/45069|18609|203/8194|24609|33793/58501|43|10241/16169|33874|88/662|374|660/180|632|178/631|521|651/520|552|521/553|13063|13063/13830|13059|13826/13826|11522|11522/9|616|660/591|590|553/552|554|223/1529|1528|1119/1120|1121|1294/13063|13063|13829/13830|11526|11522/6|616|591/660|590|681/521|522|520/181|178|11525/11525|14597|10758/5|416|222/415|221|180/178|179|181/10755|7683|9219/9219|10|416/418|417|552/220|682|681/665|683|34225/182|12289|49201/45273|44721|163/8193|15393|45141/54705|134|10241/9257|33847|1925/10|984|998/990|827|828/825|800|826/799|1703|1690/1702|1700|1680/1681|12296|11527/12295|11527|12295/5|972|993/970|971|1682/1721|1856|1720/11528|7688|9992/10760|5|993/975|971|992/1700|1701|1681/1856|1720|1213/1702|1680|1679/30769|45201|60849/74|12289|58401/45069|56241|222/8193|24609|33793/20357|238|10241/16169|33874|560/561|562|587/600|586|596/597|595|620/598|621|613/622|686|684/9219|9219|9219/9219|9219|9219/9219|9219|10755/10755|13059|13059/13059|13059|13059/13059|16|627/650|596|597/598|602|587/605|619|604/626|625|620/615|618|503/66|539|592/574|536|575/623|680|681/13059|13059|13059/10755|10755|9219/9987|8451|7683/7683|10|630/633|631|634/635|636|599/600|596|604/603|602|588/585|559|557/558|511|10755/10755|13059|13059/13059|13059|13059/13059|8|638/624|623|620/620|618|555/563|601|618/614|687|686/13059|13059|13059/13059|13059|6/715|645|644/634|633|665/685|612|684/622|13059|13059/13059|13059|10755/6|555|559/620|595|623/624|625|570/571|9219|9219/9219|9219|5/598|587|622/556|625|611/571|572|10755/9987|11523|7683/5|618|620/620|624|678/677|573|601/599|614|597/609|620|523/526|556|30769/45201|60849|86/12289|58401|45069/22449|222|8193/24609|33793|22149/238|10241|16169/33874|627|615/554|555|525/569|526|13059/11523|13059|9219/13059|13059|6/662|526|646/647|648|526/527|525|548/554|10755|11523/13059|13059|4/648|593|646/18353|219|12289/49201|45273|177/74|8193|15393/45141|22705|72/10241|9257|33847/20101|12|532/531|533|523/520|527|523/528|568|523/525|490|495/487|494|1404/1409|1442|1406/1403|9222|9219/9219|9219|9219/9219|9219|9219/9|520|523/533|531|532/524|540|585/493|491|492/498|535|501/9222|9222|9222/9222|5|536/569|571|589/1407|550|545/500|7683|7683/8451|8451|5/585|524|662/526|1403|1400/1442|1404|10758/10754|11526|81/12289|39985|45237/62641|89|8193/6177|45105|37297/79|10241|2345/33820|63877|245/10241|9219|7683/9986|7683|8451/7683|6|612/613|530|572/571|496|61/497|538|539/10759|10759|11526/9990|5|571/589|530|529/15281|62|12289/49201|45273|55217/70|8193|15393/45141|22705|60/10241|9257|33847/20101|32|380/354|353|349/351|350|502/503|408|504/407|497|396/495|392|389/391|387|386/382|384|383/399|397|398/400|409|402/410|502|408/319|469|321/468|337|467/466|358|347/354|342|340/339|7682|7682/8450|8450|9218/8450|9218|9218/9986|9986|10754/10754|12|410/408|409|405/404|403|406/394|393|391/386|343|341/350|369|363/368|361|366/9218|8450|9218/8450|8450|7682/7682|8|366/365|370|369/371|372|375/364|353|360/352|351|348/8450|8450|9218/8450|9218|8450/5|408|407/405|403|353/349|352|348/11522|11522|11522/11522|5|399/398|411|409/471|324|464/462|10754|9986/10754|9986|5/502|402|501/500|321|337/338|336|10754/9986|10754|9986/5|388|498/390|499|337/335|336|334/8450|8450|7682/7682|13|500/402|401|389/495|496|371/375|376|350/349|352|4017/55|12289|49201/45273|55217|54/8193|15393|45141/22705|16|10241/9257|33847|20101/9|372|374/375|379|377/381|380|354/333|330|239/328|240|327/188|316|7682/7682|12290|7682/12289|7682|12289/10753|9|242/274|272|252/275|519|276/333|215|217/197|198|193/199|200|8449/8449|11521|8449/11521|8449|8449/7|333|284/281|283|282/285|316|199/314|217|216/215|12289|10753/9217|9985|8449/8449|6|275/276|272|273/245|316|314/188|315|189/10753|11521|11521/8449|8449|5/374|372|373/368|234|201/322|317|7682/7682|12290|12290/5|252|284/519|333|246/239|248|241/11521|11521|12289/9217|5|238/235|236|9/201|202|196/203|11522|8449/8450|11521|12289/9217|9217|11521/8449|215|12289/39985|45237|16817/32|8193|6177/45105|16561|58/10241|2345|33820/54405|66|10241/13826|13826|9986/9986|8450|9217/8449|9217|8449/8449|9|311/310|194|199/198|224|225/218|287|288/286|290|291/292|14594|13058/7681|11521|8449/10753|6|321/320|316|318/317|1211|1214/1212|1218|14597/14597|9989|9989/5|316|317/319|316|285/282|283|158/13826|13826|9217/9217|5|310/325|199|224/448|449|177/172|8451|8452/8451|8452|4/484|505|212/4017|69|12289/49201|45273|15025/67|8193|15393/45141|8113|16/10241|9257|33847/14725|12|505/444|505|444/444|443|443/445|443|43/43|473|472/401|402|400/404|405|445/406|446|9990/13062|12294|10758/13830|13830|7686/8454|8454|10/323|444|338/339|43|443/445|445|486/1231|1229|1221/1219|1208|1209/1210|1340|1222/8450|8450|13826/8450|13826|8450/7682|8450|8450/9|443|443/444|444|484/324|325|310/1527|629|287/630|288|29/290|285|10758/13062|13830|10758/7686|10758|9222/8|445|486/43|486|487/261|478|1207/1350|1370|1161/1369|1368|1323/8453|8453|14597/8453|14597|14597/7|29|327/315|326|313/311|276|387/461|378|390/459|8450|8450/14594|8450|14594/14598|7|427/419|491|420/492|494|1297/1303|1373|1206/1206|1371|8453/8453|14598|8453/9222|7686|7/339|443|324/444|484|444/402|472|404/449|448|8453/8453|7686|7685/13830|6|478/309|487|488/440|397|278/458|277|276/10754|13058|10754/13826|7682|5/311|326|313/315|1002|1527/737|287|14594/8450|14594|14594/5|43|443/43|339|448/295|294|279/10758|10758|13062/13830|13062|12294/12290|13826|10754/8450|13826|9218/13830|7686|8454/8450|8449|7682/7682|10754|13826/7686|7686|13830/7682|10754|10754/47|12289|39985/45237|16817|32/8193|6177|45105/16561|243|10241/2345|33820|12165/66|10241|9986/12290|7682|9986/7681|13058|8450/10754|6|484/219|484|212/505|1385|1386/1317|1352|7686/9221|9990|13062/5|186|442/338|440|1384/1320|1362|1361/30769|45201|12465/209|12289|58401/45069|17585|48/8193|24609|33793/33925|49|10241/16169|33874|1115/1354|1386|1093/1092|1090|1091/1095|1311|1309/13058|12289|8450/7681|7681|11521/10753|7|316/319|689|316/686|684|172/472|174|473/474|9990|13829/9990|7686|5/316|321|684/322|174|474/441|149|8454/9221|8454|7685/10|439|186/442|189|185/187|506|186/188|6833|39/12289|49201|45273/9137|26|8193/15393|45141|33457/27|10241|9257/33847|9605|35/414|297|413/298|265|300/298|299|296/303|512|513/255|514|450/234|232|232/233|231|449/481|447|482/483|258|238/257|263|262/485|485|486/261|437|436/278|274|273/194|144|203/206|205|434/204|435|485/230|231|226/223|225|224/1163|1225|1224/1181|1226|1180/1228|11521|11521/11522|11521|11522/11522|11522|11521/11522|11521|11522/11521|11525|11525/11525|11525|11525/11526|11526|11525/11525|11525|11525/11525|11525|23/103|97|108/95|107|109/117|110|109/111|95|98/96|106|100/114|101|100/99|102|115/105|1151|1154/1392|1269|1201/1393|1330|1195/1331|1194|417/262|261|256/258|257|483/311|185|309/241|248|11522/11521|11522|11522/11522|11522|11522/11522|11522|11522/11526|11521|11525/11525|11525|11525/11526|11525|11525/19|228|227/226|229|232/234|232|450/256|255|249/254|253|512/511|297|510/414|1174|1170/1397|1146|1348/1347|1167|1345/1346|1299|170/1298|383|384/380|377|379/11525|11525|11525/11525|11525|11525/11525|11525|11521/11521|11521|11521/11521|11521|11522/11522|17|69/68|67|52/66|49|64/62|63|60/73|61|74/22|88|92/1004|35|81/33|84|75/85|24|79/23|77|73/87|74|11522/11522|11521|11522/11521|11522|11521/11522|11525|11525/11525|11525|11525/11525|15|294/287|289|289/287|287|286/344|285|286/285|279|282/281|994|992/993|1028|1023/1020|1022|1014/1013|1015|1016/60|1026|61/11525|11525|11525/11525|11526|11526/11526|11526|11526/11525|11526|11526/13|509|7/10|8|260/136|136|486/485|486|486/445|1326|1325/984|984|1356/1357|1162|1364/1160|1365|1161/1368|11526|11525/11525|11525|11525/11525|11525|11525/11525|11526|11525/12|23|89/58|59|57/58|50|25/51|60|62/10|411|410/411|409|208/210|207|214/213|414|11522/11522|11522|11521/11521|7681|7681/9217|9985|10753/11|29|663/11|208|14/11|12|13/85|80|1207/1205|1202|1206/1204|1301|1147/1302|1347|1345/11521|11521|11521/11521|11521|11525/11525|11525|11525/11525|11|232/232|233|256/252|249|250/251|272|253/144|206|273/275|276|385/387|379|378/377|11525|11525/11525|11525|11525/11525|11525|11525/11525|11524|11/263|485|260/136|136|486/45|43|44/46|1035|74/52|73|51/23|25|22/54|11522|11521/11521|11521|11521/11521|11522|11521/11521|10|345/287|295|289/287|288|279/292|280|272/267|271|269/270|1200|1331/1330|11522|11522/11522|11521|11521/11521|11521|11521/9|2|30/31|2|6/1|93|47/1160|1161|1155/1159|1139|1349/1135|1136|11522/11522|11522|11522/11522|11521|11522/11522|9|4/3|1|2/6|31|94/6|348|272/481|415|260/416|261|417/11521|11521|11522/11522|11521|11521/11521|11521|9/48|47|4/1|3|2/5|33|1190/1193|104|263/259|312|310/249|11525|11526/11522|11522|11522/11521|11521|11521/9|24|92/91|36|34/35|37|34/86|80|92/91|1041|1047/1038|1046|11521/11525|11525|11525/11525|11525|11525/11525|8|335/336|139|138/41|42|17/984|1356|1326/1355|1239|1157/1239|11524|11524/11524|11525|11521/11525|11526|8/482|483|258/238|257|263/262|1222|1340/1341|1209|1230/1219|1229|11525/11525|11525|11525/11526|11526|11525/8|294|286/293|285|515/234|514|1133/1128|1395|1127/1236|1234|1192/11525|11526|11526/11526|11526|11526/11526|8|109/111|110|112/111|113|98/1331|417|270/416|271|415/272|11525|11525/11521|11521|11521/11521|11521|7/70|71|28/27|26|11/444|110|8/16|9|36/11526|11526|11525/11525|11525|11526/7|41|17/15|16|18/40|1012|978/1011|975|1037/980|11522|11526/11526|11526|11526/11526|7|7/509|10|242/483|447|1232/999|1002|985/1527|629|11521/11521|11521|11521/11521|11522|7/450|232|256/233|252|446/209|211|207/212|213|480/11522|11522|11522/11522|11522|11522/7|342|343/341|469|470/337|1011|995/1012|1021|1028/1020|11521|11522/11522|11521|11521/11521|7|512/303|296|299/298|300|451/450|453|454/406|455|11522/11521|11522|11521/11521|11521|6/75|63|21/73|19|21/20|48|49/62|11525|11525/7685|11525|9989/6|70|28/71|27|80/66|13|12/11|14|7685/9989|7685|9221/7685|6|285/286|285|286/293|1133|1395/1394|1195|1393/11525|11525|11526/11525|11526|6/347|231|481/449|447|1159/1161|1349|1350/1207|11526|11526/11526|11526|11526/6|88|92/22|24|23/66|68|69/72|71|14597/11525|13061|11525/11525|6|133/132|131|134/132|107|109/96|103|102/11526|11526|11525/11526|11526|6/233|252|446/250|448|83/81|82|84/85|11521|11521/11521|11521|11521/6|413|265/30|413|32/411|411|208/477|475|11521/11522|11522|11521/11522|6|513/255|514|450/234|383|380/170|382|11522/11522|11522|11522/5|12|72/14|12|1026/1024|1013|1022/11522|11522|11521/11521|5|469/335|337|334/1026|1026|1016/1013|11526|11525/11525|11525|5/21|63|75/65|993|1017/994|1018|11521/11522|11522|11522/5|486|486/445|43|1231/1008|1229|1010/11525|11525|11525/11525|5|285/285|227|227/1232|1222|1233/1341|11522|11521/11521|11521|5/127|124|121/123|106|107/97|96|11525/11525|13061|13057/5|44|137/45|136|1088/1202|1147|1204/13829|14597|13061/13061|5|87/82|83|81/1330|1200|1201/1199|11525|11522/11525|11522|5/260|477|261/478|57|56/58|48|11521/11522|11522|11522/5|35|36/34|91|6/76|75|24/11521|11521|11521/11521|5|475/269|472|473/39|453|446/406|11521|11521/11521|11521|5/41|15|17/16|36|16/18|15|11521/11521|9985|7681/5|474|473/267|268|1036/1044|996|1039/11525|11525|11525/11525|5|77/82|79|87/1025|1023|1024/1022|11521|11521/11521|11521|5/428|423|421/422|995|998/1021|1020|11525/11525|11525|11525/88|123|124/125|253|251/249|38|9/39|485|486/486|291|290/288|477|9/305|286|285/285|473|269/268|422|423/424|510|297/511|514|293/515|253|512/254|244|245/246|226|227/228|137|38/136|19|20/21|84|81/53|26|27/28|234|515/514|486|485/485|260|136/485|263|238/483|477|305/9|244|246/245|299|300/301|111|113/112|114|106/100|96|98/95|60|25/61|6833|110/12289|49201|45273/24497|113|8193/15393|45141|7345/27|10241|9257/33847|9605|11/125|126|130/129|126|120/119|118|121/122|828|825/822|820|821/823|824|195/784|13829|13061/13061|13061|13057/13057|6|969/810|966|809/987|1029|67/987|63|8449/14593|8449|10753/5|79|76/77|78|68/66|65|67/9220|7684|9220/7684|5|130/126|125|123/1050|1049|1048/93|13057|13057/13057|13057|7/120|129|126/122|118|121/27313|110|12289/49201|45273|32945/113|8193|15393/45141|7345|107/10241|9257|33847/28549|10|792/983|795|982/981|814|980/813|816|958/819|818|814/817|816|961/13060|11524|7684/8452|10756|6/983|819|982/821|814|963/824|962|961/9220|9220|10756/9988|106|12289/39985|45237|27825/29|8193|6177/45105|27569|112/10241|2345|33820/25733|109|10241/9220|9220|7684/13060|12292|13060/12292|12292|10756/12292|10756|10756/11|938|936/935|937|962/959|961|796/981|795|962/961|957|816/555|815|942/9220|9220|9988/7684|11524|8452/7|795|796/794|797|932/933|941|939/940|938|9220/9220|13060|13060/5|795|794/792|793|936/809|953|954/9220|9220|7684/9988|4|796/959|797|53425/207|12289|49201/45273|52657|204/8193|15393|45141/7345|209|10241/9257|33847|7045/14|211|210/206|208|207/206|209|203/431|202|436/189|437|1108/1112|1108|1110/1109|1111|1304/1305|1307|1306/13829|7685|13829/7685|13829|13061/12293|8453|8/190|200|189/202|436|431/27|168|170/166|171|165/165|162|11526/9990|11522|9986/9986|9217|9217/8|204|201/200|191|190/185|189|166/165|164|161/163|150|11526/11526|9990|11526/10758|6|437/438|436|28/27|393|390/388|389|169/9990|9221|9221/7685|7685|6/435|432|207/209|206|140/389|391|390/9990|10758|8453/8449|7681|13057/50|12289|39985/45237|6321|29/8193|6177|45105/12209|28|10241/2345|33820|8325/25|10241|13061/13061|11526|13061/11526|13057|11522/11522|8|458/461|191|462/192|193|185/121|421|137/418|135|131/9990|9222|8453/7685|12293|13829/7|458|455/205|454|211/210|1333|420/170|419|171/165|11522|11522/13825|11522|13825/13825|6|467/174|465|175/177|1336|1074/1335|777|1071/13058|9986|13057/9986|9986|6/149|464|147/460|459|1096/1335|1097|1071/1334|13062|13061/9990|9990|5/174|465|175/177|423|422/127|123|9222/13061|10758|11526/5|147|166/459|452|129/131|419|418/13829|11526|13829/13829|13|177/463|465|177/465|463|193/462|463|185/191|192|58545/230|12290|49201/45273|2737|265/8194|15393|45141/7345|229|10241/9257|33847|64901/9|669|685/664|690|691/692|693|694/635|55|654/659|661|660/662|10759|10755/9219|10755|9219/5|690|664/691|666|633/631|55|632/10759|10759|12295/267|12289|39985/45237|59057|35/8193|6177|45105/23473|227|10242/2345|33820|25221/231|10241|8451/8451|11524|9987/10756|9219|10756/6|685|671/669|670|668/790|640|969/284|9987|7683/9219|13059|181/12289|39985|45237/46513|35|8193/6177|45105|40881/227|10241|2345/33820|42373|182/10241|13064|8455/7688|9224|9992/10760|6|791/983|984|819/998|1720|417/1719|1716|9992/10760|11527|181/12289|39985|45237/45233|252|8193/6177|45105|40881/259|10241|2345/33820|45445|177/10241|10759|10759/12296|10759|12296/10757|9992|10757/10757|6|819/821|818|814/812|1845|1678/1708|1677|1675/7688|9224|12296/9992|5|767/770|173|679/1544|1677|1547/1678|8456|12296/10757|10757|5/768|675|769/989|1708|1675/1707|1103|1716/1715|30769|45201/43697|160|12289/58401|45069|44721/178|8193|24609/33793|45957|171/10241|16169|33874/1706|1704|1705/1707|1848|1857/1714|1676|1135/9992|9992|13064/14600|12296|12296/6|795|981/982|814|821/1848|1714|1849/1850|9992|14600/14600|12296|5/988|987|966/809|1845|1708/1709|1704|8456/7688|9224|11528/7|816|817/815|810|809/806|44465|165/12289|49201|45273/44977|164|8193/15393|45141|45745/174|10241|9257/33847|50565|7/982|983|795/792|794|793/1685|1683|1684/1709|1704|9991/9223|13063|12295/5|777|778/941|807|1853/1694|1695|1704/1706|1684|30769/45201|29617|43/12289|58401|45069/25009|99|8193/24609|33793|58245/116|10241|16169/33874|646|648/647|649|626/12291|7683|9219/8452|5|772/985|683|680/968|786|650/785|30769|45201/689|85|12289/58401|45069|21169/237|8193|24609/33793|60293|3/10241|16169|33874/724|723|722/721|717|720/718|707|705/706|703|712/773|780|774/778|777|771/772|670|671/10755|10755|10755/10755|10755|10755/10755|10755|10755/10755|10755|10755/10755|8451|10755/8451|8451|7683/14|723|764/725|764|726/766|751|720/718|710|713/712|716|721/719|720|708/707|709|706/710|711|779/780|778|10755/8451|10755|8451/10755|8451|10756/10756|10756|9/733|731|732/724|729|722/752|724|703/773|776|775/694|695|693/699|10756|10756/10756|10756|10755/10755|10755|10755/7|744|733/739|732|742/752|624|666/625|664|665/685|10755|10755/8451|10755|8451/10755|6|606/708|706|705/704|772|671/782|672|674/8451|7683|8451/7683|7683|6/745|696|696/714|714|692/674|676|677/678|9987|8451/7683|7683|5/765|729|728/734|669|668/771|670|10756/8451|10756|10755/5|751|718/749|747|681/679|680|678/10755|10755|10755/10755|5|745/696|696|714/692|676|679/678|13059|11523/12291|10755|10755/10755|10755|10755/10755|72|12289/39985|45237|19633/226|8193|6177/45105|21681|44/10241|2345|33820/22661|77|10241/8451|8451|12291/8451|12291|12291/13058|12291|7682/9219|10755|8451/9987|8451|8451/5|702|702/628|629|670/668|594|606/9987|11522|10755/7682|4|640/700|701|53169/34|12289|49201/45273|58033|225/8193|15393|45141/57777|208|10241/9257|33847|11141/10|679|770/173|767|677/768|676|675/216|159|183/825|176|820/628|823|641/642|11524|9987/11524|11524|5/173|677|678/174|118|454/643|644|7683/9988|9219|46/12289|39985|45237/6321|226|8193/6177|45105|13233/44|10241|2345/33820|61829|25/10241|13831|9222/9991|7687|11527/7686|13062|6/471|174|174/176|176|646/645|648|431/9218|10755|7683/8451|4|471/174|174|18609/74|12289|49201/45273|20401|1/8193|15393|45141/57777|73|10241/9257|33847|11141/16|140|617/615|616|625/591|604|553/605|554|602/661|603|650/597|564|522/566|521|565/553|590|577/576|578|551/12290|12289|9987/13059|9987|8451/7683|7683|8/650|661|535/534|536|221/415|179|181/502|522|70/564|69|9990/12294|9990|12290/9987|9987|6/661|554|534/223|221|1419/1418|1458|1483/9222|8454|9222/10759|5|555/140|618|615/375|373|536/504|7683|8451/7683|7683|5/145|542|140/555|583|512/558|511|10758/10758|11526|247/12289|39985|45237/38577|226|8193/6177|45105|64177/149|10241|2345/33820|63365|151/10241|13063|13830/13063|13063|13063/13062|13063|13063/13063|11527|11527/10759|10759|10759/10759|10759|10759/16|643|639/643|639|643/656|644|633/634|631|635/556|622|587/598|1029|1460/1031|1461|1464/1480|1465|1481/1466|1490|1491/1506|1476|13062/12294|13063|11527/11527|10759|10759/10758|10759|10758/10759|12|535/572|650|627/596|601|600/657|649|712/716|1575|1521/1574|1474|1571/1473|1572|11527/10759|11527|10759/10759|10759|10759/8|626|556/632|631|630/633|611|1522/1510|1559|1509/1578|1579|13063/13063|13063|13063/13063|13063|7/644|634|645/636|649|600/1503|1502|1504/1518|1519|1498/13063|11527|13063/11526|13062|11526/7|655|594/621|595|595/559|1521|1443/1474|1475|1473/11527|10759|11526/10758|11526|6/655|608|594/557|555|1455/1469|1471|1470/13062|11527|13063/9990|5|643/643|714|715/1488|1482|1484/1479|10759|10759/10759|10759|5/559|595|543/555|1489|1506/1507|1495|1518/1496|1482|1483/1479|1456|1430/1457|30769|45201/37297|251|12289/58401|45069|18865/148|8193|24609/33793|133|146/10241|16169|33874/1469|1455|1432/1454|1449|606/10758|10759|9222/7686|9222|9222/5|608|556/557|558|1408/1401|1406|1403/10759|8454|7686/10758|4|556/586|558|12977/90|12289|49201/45273|23473|35/8194|15393|45141/57777|51|10241/9257|33847|38021/12|322|321/684|316|686/689|688|686/687|685|692/656|661|657/663|1556|11527/9987|9991|10759/7687|5|686/684|685|671/1113|1115|1384/1551|1553|1552/30769|45201|34225/69|12290|58401/45069|13233|48/8193|24609|33793/61829|134|10241/16169|33874|1551/1552|1550|1534/1537|1535|1536/13061|10757|11525/8453|9221|10759/6|174|471/216|214|212/1550|1537|1218/1213|14599|9221/10759|10759|5/774|672|670/671|1538|1116/1526|1117|10757/13831|10759|92/12289|39985|45237/2225|256|8193/6177|45105|64689/252|10241|2345/33820|2949|265/10241|14599|9991/9223|11527|12295/13831|5|685/669|671|670/1555|1528|1022/1529|10759|9223/10759|12295|242/12289|39985|45237/2225|256|8194/6177|45105|64689/252|10241|2345/33820|40837|265/10241|10759|11527/14599|9223|7687/8455|7|768/767|677|173/678|143|1533/1531|1681|1067/1540|1367|30769/45201|31921|123/12289|58401|45069/30897|124|8193/24609|33793|3205/125|10241|16169/33874|896|892/886|891|887/911|888|889/890|913|885/883|884|879/880|878|874/876|877|930/120|871|909/873|879|878/10756|13060|10756/12292|13060|13060/13060|13060|13060/13060|13060|13060/13060|11524|10756/7684|9220|8452/14|994|914/913|890|890/894|925|906/924|922|893/920|895|148/905|899|862/857|858|859/860|868|869/9220|12292|9220/11524|7684|10756/9988|10756|9/897|861|916/870|907|876/874|909|916/972|917|955/893|894|895/926|10756|10756/13060|13060|13060/13060|13060|8/914|915|890/891|889|893/895|889|911/913|881|883/879|13060|13060/13060|13060|13060/13060|6|843/841|842|844/923|880|886/884|887|888/13060|12292|12292/9220|9220|6/886|888|910/883|875|894/955|928|972/915|13060|13060/13060|13060|13060/6|880|908/881|889|895', '1141|1142|1140|1144|1145|1167|1267|1416/1265|1259|1258|1143|1257|1256/1259|1141|1143|1140|1256|1254/1607|1606|1763|1762/1416|1167|1162|1161/1267|1254|1145|1140/1144|1168|1167|1161/1761|1601|1760|1600|1623/1259|1805|1141|1804|1142/1763|1954|1607|1259/1759|1953|1619|1623/1815|1894|1827|1959|1828|1958|1823|1824|1822|1817|1820|1816|1833/1884|1885|1877|1886|1878|1918|1898|1899|1901|1876/1884|1882|1881|1879|1880|1809|1812|1811|1912|1826/1958|1959|1824|1894|1817|1814|1816|1813|1865/1827|1828|1829|1830|1914|1823|1822/1905|1821|1820|1818|1819|1826|1914/1827|1829|1815|1825/1829|1914|1825|1826/1894|1815|1814|1813/1899|1900|1876|1902/1900|1903|1902|1831/1903|1832|1831|1833/1832|1905|1833|1820/1914|1822|1819|1820/1826|1811|1825|1815/1815|1811|1813|1810/1879|1810|1809|1811/1865|1813|1858|1848|1852|1847|1853|1888|1889|1857|1850|1856|1855|1852|1854|1853|1891|1889|1849|1850|1851|1855|1960|1854|1891/1852|1856|1858|1857|1863|1861|1862|1893|1867|1868|1866|1890|1864|1869|1865|1870|1875|1874|1906|1896/1813|1810|1848|1840|1839|1841|1842|1837|1908|1838|1913|1846|1911|1845|1844|1839|1843|1842|1908/1874|1870|1896|1895|1957|1897|1938|1871|1873|1872|1907|1904|1887|1831|1834|1833|1816/1845|1846|1847|1838|1836|1837|1835|1841|1877|1883/1834|1875|1887|1906|1907|1909|1873|1938/1810|1879|1840|1882|1883|1884|1877/1868|1893|1890|1860|1859|1857|1901/1831|1904|1902|1872|1876|1869/1864|1863|1866|1892|1867|1862/1835|1877|1836|1878|1898/1901|1876|1859|1869|1890/1844|1843|1910|1908|1913/1891|1849|1960|1851/1839|1845|1848|1847/1836|1898|1847|1888/1898|1901|1888|1857/1895|1870|1897|1871/1893|1861|1860|1857/1872|1871|1869|1870/1858|1863|1865|1864/1865|1875|1816|1834/1938|1909|1957|1896/1913|1911|1910|1844/1010|1002|816|1000|849/284|152|862|861/152|151|861|858/151|154|858|856/857|1009|860|1013|864|865|863|842|820|819/844|843|828|841|829|842|865/844|1001|843|1002|817|1010/820|1011|863|862|864|860/843|818|841|819|842/857|1008|1009|834|831|832/844|828|826|830|825/826|825|821|824|822/1001|844|821|826/989|831|833|832/1001|821|850|823/1008|835|834|832/1121|1118|1117|1116|1114|124|122|120|121|123/125|126|127|130|129|116|114|112|113|115/1100|1110|1106|1111|1107|1120|1108|1122/1111|1121|1120|1117|1119|1114|1115|121/124|125|120|127|128|129|131|113/1110|1129|1111|1130|1456/497|140|116|139|117/1100|1112|1125|1113|1126/116|117|112|105|118/1111|1456|1121|1118/1456|1123|1118|1116/1123|1124|1116|124/108|135|107|105/105|135|118|119/1126|1127|1125|1128/119|135|137|136/1395|1396|1127|1128/434|136|435|138/1100|1106|1112|1113/1113|1106|1109|1108/118|119|112|115', '', '', '>\n']
triangles = true
tristrips = true

['<', 'faces', 'polygon1', 'v', '', '', '', '', '81|22|75|12|11|10|9|8|5|13|4|14|7|38|41|63|42|64|52|65|66|57|67|68|53|54|48|55|86|35|77|37|78/55|54|35|36|34|71|31|72|32|59|56|57|58|60|40|39|23/65|64|57|63|62|38|39|14|23|13|24|21', '', '', '>\n']
tristrips = true

['<', 'faces', 'polygon2', 'v', '', '', '', '', '78|37|77|36|86|55|49|54|53|68|67|58|66|65|52|64|41|63|42|38|7|14|4|13|5|8|10|9/55|36|54|35|70|71|58|72|59|31|56|46|57|47|40|43|28|44/85|48|18|19|17|27|26|25|6|7|1|4|5/81|75|22|12|9|11|10|74|15|73|16', '', '', '>\n']
tristrips = true

['<', 'faces', 'polygon3', 'v', '', '', '', '', '83|76|35|36|33|32|31|29|30|44|45|43|42|28|39|23|38|14|37|7|41|25|40|27|51|50|65|66|57|67|68|53|69|34|70|33|31/82|47|18|19|17|27|26|25|6|7|1|4|5|13|8|20|21/6|1|3|2|16|15|72|73|77|78', '', '', '>\n']
tristrips = true

['<', 'faces', 'polygon4', 'v', '', '', '', '', '76|83|34|54|53|47|52|49|66|50|65|51|64|63|56|62|61|37|38|14|23|13|24|21/80|82|48|19|18|17|26|27|25|6|7|1|4|5|13|8|21|20/76|34|36|33|32|30|29|31|44|45|43|42|28|39|23|38', '', '', '>\n']
tristrips = true

if you look into my global format, you'll notice the list for the 'faces' object list is the proper length...
format: http://tcll5850.proboards.com/index.cgi?action=display&board=umcrel&thread=81&page=1

the only last option I can think of on the obj side is the tristrip to triangle conversion :/
here's an example of how that's suposed to play out:

tristrip: 6|1|3|2|16|15|72|73|77|78

triangles:
6|1|3
1|3|2
3|2|16
2|16|15
16|15|72
. . .

so yea...
IDK what's up yet...

EDIT:
well...
there's nothing wrong at all with my obj plugin

now I know for sure it's the mdl0 plugin...
but what is it :/
these indexes are outrageous >_>


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Chuy on March 21, 2011, 05:47:05 PM
It's been a while since i last looked at this thread and i have to say AMAZING job on getting this close to having it finished i applaud you for that *applause*
BTW about how close percentage wise is the importer to being finished?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 21, 2011, 06:51:31 PM
It's been a while since i last looked at this thread and i have to say AMAZING job on getting this close to having it finished i applaud you for that *applause*
BTW about how close percentage wise is the importer to being finished?

Though it seems like it's nearly done, I'm not exactly sure how long it'll take to finish. A lot of values required for export aren't set and I'm not sure how to set them or if I'll need to count the size of everything to get offsets. I'm just studying Kryal's code at the moment, testing things out. I'll post when I get stuff to work.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 22, 2011, 01:07:54 AM
Not to mention that even if it works in Dolphin, it mightn't necessarily work on the actual hardware. RTB ran into that issue when he was messing with adding polygons to models. You also see it when you're trying to load textures that aren't powers of two.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 22, 2011, 04:29:33 AM
I hope that, when this is finished, someone can rig the Naruto import model with Ike's boneset.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 22, 2011, 06:05:54 AM
I hope that, when this is finished, someone can rig the Naruto import model with Ike's boneset.

about that (bones and rigging)

can you take a short break to work on a bone adder / placement editor
that would kinda be more useful than a dae importer right now :/
(kinda doing what TSG's BTE was supposed to do)

and there should be less code involved
(brbx already has everything you need)

I'm asking because my bone structure for pachi is beginning to become urgently needed...
I can't wait too much longer for it :/

this is what I need to do:
TopN
-TransN
--XRotN
---YRotN
----HipN
-----origin (for scaling him to 4.2, and moving him to the proper position)
------waist
-------LThigh
--------LFoot
-------RThigh
--------RFoot
-------Spine
--------Head
---------LEar
---------REar
---------HaveN
--------LArm
---------LHand
--------RArm
---------RHand
-------Tail1
--------Tail2
---------Tail3
----------Tai4
----ThrowN

the bones in yellow are what I need to add
note: I'm not changing any of pachi's original bones
I'm putting Pachi over Pika and I want to be able to use both chars.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 22, 2011, 05:21:25 PM
I hope that, when this is finished, someone can rig the Naruto import model with Ike's boneset.

about that (bones and rigging)

can you take a short break to work on a bone adder / placement editor
that would kinda be more useful than a dae importer right now :/
(kinda doing what TSG's BTE was supposed to do)

@ds22: You can start rigging the model now, so you can import it asap. (I've already started ripping and rigging models I'll be importing)

@tcll: I'll work on it, like I said.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Eternal Yoshi on March 22, 2011, 05:26:33 PM
Yeah. I want a bone adder that links all of the bones correctly.
It's basically the only thing keeping me from releasing the updated movesets Lyn and Gray Fox.

Until then, they are going to stay in semi-closed development.

I haven't looked at the Mdl0 I modded since relinking the original 29 bones. I should go do that. I also see you updated your XML.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 22, 2011, 05:34:47 PM
I hope that, when this is finished, someone can rig the Naruto import model with Ike's boneset.

about that (bones and rigging)

can you take a short break to work on a bone adder / placement editor
that would kinda be more useful than a dae importer right now :/
(kinda doing what TSG's BTE was supposed to do)

@ds22: You can start rigging the model now, so you can import it asap. (I've already started ripping and rigging models I'll be importing)

@tcll: I'll work on it, like I said.
Sadly, I don't really know how to rig a model.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 22, 2011, 05:37:15 PM
I hope that, when this is finished, someone can rig the Naruto import model with Ike's boneset.

about that (bones and rigging)

can you take a short break to work on a bone adder / placement editor
that would kinda be more useful than a dae importer right now :/
(kinda doing what TSG's BTE was supposed to do)

@ds22: You can start rigging the model now, so you can import it asap. (I've already started ripping and rigging models I'll be importing)

@tcll: I'll work on it, like I said.
Sadly, I don't really know how to rig a model.

Me neither! :D I'm teaching myself as I go lol


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: dark sonic 19 on March 22, 2011, 05:42:49 PM
I my help riging a model


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 22, 2011, 05:48:19 PM
rigging is prbly the easiest thing to do (not grouping)

here's a nice tut:
http://www.youtube.com/watch?v=iTeHY_2Z0_4

but still,
we're just talking about editing a bone tree and adding dummy bones to it


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: dark sonic 19 on March 22, 2011, 05:51:41 PM
That tut is realy long


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 22, 2011, 05:54:35 PM
That tut is realy long

yea, I know, but it's the best one I've seen

it teaches you alot :)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: dark sonic 19 on March 22, 2011, 05:57:57 PM
Ok thats good to know


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 22, 2011, 06:51:51 PM
Is that tut for 3DS? :l


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 22, 2011, 06:53:47 PM
Blender.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 22, 2011, 10:56:33 PM
still though...
you don't really need to know-

actually, for dummy bones that have a purpose (like HaveN)...
perhapse you would have to know a little about rigging,
to know how to parent it to the right bone...

but that's about it...
I just need to get my tree for Pachi built right...
and I'm not doing that by hand >:(
way too many offset values to change...

either TSG will have to release his new one,
or BJ will have to add support to Brbx...

Pachi is currently on hold until this happens
he doesn't have the proper bones so he won't work right...



Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 23, 2011, 04:31:56 AM
I think I'll just request the rigged Naruto after BlackJax96 releases his Brawl Box mod.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Colter on March 24, 2011, 03:35:14 PM
Random thing. I've been looking for a way to use .DAT files to use on Brawlbox by conversion or something else. I'm very inexperienced in this field. I play Runescape (not in the mood to argue) and decided to start porting models from it to Brawl and go from there. I've used a RSMV program that allows me to view the models for the game. Someone said a few months back they would like to learn about .DAT files. I have absolutely no idea why I'm posting, but maybe looking up that software could intrigue you, and hopefully help me port this Nomad onto Wolf. It's called RSMV, and it's working just fine.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 25, 2011, 04:35:45 AM
Random thing. I've been looking for a way to use .DAT files to use on Brawlbox by conversion or something else. I'm very inexperienced in this field. I play Runescape (not in the mood to argue) and decided to start porting models from it to Brawl and go from there. I've used a RSMV program that allows me to view the models for the game. Someone said a few months back they would like to learn about .DAT files. I have absolutely no idea why I'm posting, but maybe looking up that software could intrigue you, and hopefully help me port this Nomad onto Wolf. It's called RSMV, and it's working just fine.
You can rip models from RUNESCAPE!

I need a new pair of pants, for I have both jizzed and crapped them.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 25, 2011, 06:45:19 AM
and those DAT filestalked about earlier were from Melee...
they'd be incompaible here...
greeeaaat... yet another game with DAT files :srs:
I'm not adding support for these.

to support these,
build the plugin when I make my release.
(I'll write a guide telling the specs of the plugins and the tmp format)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DoctorFlux(Mariodk) on March 25, 2011, 10:24:21 AM
i also hope this is soon done so i maybe can find a Vegeta Model and convert him to .mld0 and port him to Brawl or if possible give him same boneset as someone in Brawl


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 25, 2011, 10:38:07 AM
if possible give him same boneset as someone in Brawl

that would require redoing the weights and rig before exporting...

do a port...
it's much easier :)

if you use my method,
all you have to do is add the needed bones
eg: with Pika: [ TransN : HipN ] + ThrowN + HaveN

(using the example)
you can then add your bones between HipN and ThrowN
and put HaveN wherever the head is.

keep in mind: you'll have to move your first bone opposite of HipN when animating ;)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DoctorFlux(Mariodk) on March 25, 2011, 10:40:50 AM
if possible give him same boneset as someone in Brawl

that would require redoing the weights and rig before exporting...

do a port...
it's much easier :)

if you use my method,
all you have to do is add the needed bones
eg: with Pika: [ TransN : HipN ] + ThrowN + HaveN

(using the example)
you can then add your bones between HipN and ThrowN
and put HaveN wherever the head is.

keep in mind: you'll have to move your first bone opposite of HipN when animating ;)
ok so i do a Port :D but first i have to find a Vegeta in the right Model File format :D


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: dark sonic 19 on March 25, 2011, 11:33:26 AM
What format it has to be in?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DoctorFlux(Mariodk) on March 25, 2011, 11:40:42 AM
What format it has to be in?
i also want to know before i do it a seach for a vegeta.(the file formate) Model(maybe with texture too)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 25, 2011, 12:09:13 PM
I would like to have a Naruto import with as less T-poses as possible (meaning that I can just use the already excisting animations for CoN Naruto).
I think I'll watch that rigging tutorial vid posted the other day in it's entire and see if I can prepare Naruto to work over Ike.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 25, 2011, 02:34:32 PM
I would like to have a Naruto import with as less T-poses as possible (meaning that I can just use the already excisting animations for CoN Naruto).
I think I'll watch that rigging tutorial vid posted the other day in it's entire and see if I can prepare Naruto to work over Ike.


if you use my method,
you won't have too much work to do but the add and parent dummy bones :)

then export and convert :P

do you know what bones are needed for ike??

here's a list of the global required bones:

TopN (origin) (animation snaps back otherwize)
TransN (movement (moves TopN to new location)) (freezes otherwize)
XRotN (rotation) (??)
YRotN (rotation) (??)
HipN (for being grabbed/held/thrown by opponent) (polygons splatter otherwize)
ThrowN (to hold opponent) (can't hold opponent otherwize)
HaveN {has derivitives} (to hold pick-up items) (freezes otherwize)

derivitives of HaveN are RHaveN and LHaveN (Lucario has these)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DoctorFlux(Mariodk) on March 25, 2011, 02:38:04 PM
is it maybe also possible to use that Kid Goku Over luigi with same boneset as Ness get Goku´s Powerpole to work as Ness Bat and the tail get removed or dont use the bones same for the bones in the hair then i can easyer make a Kid Goku over Ness :D(i really hate Kid goku is over Luigi this why i will try to port him)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 25, 2011, 02:53:16 PM


if you use my method,
you won't have too much work to do but the add and parent dummy bones :)

then export and convert :P

do you know what bones are needed for ike??

here's a list of the global required bones:

TopN (origin) (animation snaps back otherwize)
TransN (movement (moves TopN to new location)) (freezes otherwize)
XRotN (rotation) (??)
YRotN (rotation) (??)
HipN (for being grabbed/held/thrown by opponent) (polygons splatter otherwize)
ThrowN (to hold opponent) (can't hold opponent otherwize)
HaveN {has derivitives} (to hold pick-up items) (freezes otherwize)

derivitives of HaveN are RHaveN and LHaveN (Lucario has these)
I would need:
TopN
TransN
XRotN
YRotN
HipN
ThrowN
LHaveN

But if I use your method, I won't have to re-animate Naruto from scratch?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Eternal Yoshi on March 25, 2011, 04:46:28 PM
I Hope that when this comes out, I can use this for stages and be able to move and scale it all with 1 bone.
I still have all of the stage models from MGS2....


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 25, 2011, 08:17:38 PM
I would need:
TopN
TransN
XRotN
YRotN
HipN
ThrowN
LHaveN

But if I use your method, I won't have to re-animate Naruto from scratch?

IDK if those are the exact bones you need for ike :/

and yea, for the animations,
all you'd have to do is copy the bones to the brawl chr0 :)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 25, 2011, 08:58:05 PM

IDK if those are the exact bones you need for ike :/

and yea, for the animations,
all you'd have to do is copy the bones to the brawl chr0 :)
Maybe the 2 sword bones as well IDRK.
Also, what exactly do you mean with "all you'd have to do is copy the bones to the brawl chr0"?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 25, 2011, 10:26:49 PM
Maybe the 2 sword bones as well IDRK.
Also, what exactly do you mean with "all you'd have to do is copy the bones to the brawl chr0"?
I'll use Pika as an example:

you know how he already has his brawl bones in the chr0 right :/
well...
for me, I'd have to take pachi's bone data from his chr0
and paste it on top of pika's:

[Pika's brawl bones]
[origin
waist
spine
(Pachi's remaining bones)]

note: the bones you're adding must have an animation length equal to the brawl animation


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ds22 on March 26, 2011, 06:00:54 AM
But that's the problem.
There are almost no useful animations for the Naruto import model.
Therefor, I want the model to be fully compatible with the CoN Naruto animations without actually editing the animations in any way.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Ultraxwing on March 26, 2011, 02:32:37 PM
Well, i need some help.

i want to put in a special Chracter.

can someone help me find a God Gundam (Burning Gundam) model in DAE format?

i can get the trial version of 3ds max to rig him.

i will be using a Brawl Bone Mesh. so i won't have so many Import Issues.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 27, 2011, 12:16:59 AM
I'm not accepting any requests or help from anyone for quite a long tome now:/
(unless I don't mind doing them)

why:
I think I've just experienced what Kryal/Pharrox/
(anyone else who ever has programmed for us) has experienced...
that would be quite a large load of stress from slowdowns/requests/help/questions/etc...

I just felt it after having to re-install windows for the --th time...
now I have to download/install the updates AGAIN...
and install my some 35-60 programs again...

I'M TIRED OF IT!!!
not to mention I snapped on my chat


so yea...
I just ask that you please not ask me for help or anything for quite a long time :)

I've got quite a large pile of stuff to deal with...

don't worry, I'm not quitting any projects or anything ;)
this is to help me clean up my messes and get myself back on track,
so that I can actually succeed where others have failed.

thank you


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SmashClash on March 27, 2011, 01:29:29 AM
I'm not accepting any requests or help from anyone for quite a long tome now:/
(unless I don't mind doing them)

why:
I think I've just experienced what Kryal/Pharrox/
(anyone else who ever has programmed for us) has experienced...
that would be quite a large load of stress from slowdowns/requests/help/questions/etc...

I just felt it after having to re-install windows for the --th time...
now I have to download/install the updates AGAIN...
and install my some 35-60 programs again...

I'M TIRED OF IT!!!
not to mention I snapped on my chat


so yea...
I just ask that you please not ask me for help or anything for quite a long time :)

I've got quite a large pile of stuff to deal with...

don't worry, I'm not quitting any projects or anything ;)
this is to help me clean up my messes and get myself back on track,
so that I can actually succeed where others have failed.

thank you
Good speech, Tcll.
I'm glad you said this.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Ultraxwing on March 29, 2011, 07:01:18 AM
Sorry...

i was asking anybody. for i'm completely new to this.

so sorry, i'm still looking.

if i cannot find a model, i'll just make one in DAE format.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 29, 2011, 04:25:00 PM
Sorry...

i was asking anybody. for i'm completely new to this.

so sorry, i'm still looking.

if i cannot find a model, i'll just make one in DAE format.

I don't think he was responding to your post, he was talking about that earlier


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Ricardo­ on March 29, 2011, 04:30:30 PM
I have a question:

Is it already possible to import simple stuff like blocks and spheres and the such from outside?
And about bone adding, is it possible to import bones added in 3DSMax/Blender as well?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 29, 2011, 04:42:28 PM
I have a question:

Is it already possible to import simple stuff like blocks and spheres and the such from outside?
And about bone adding, is it possible to import bones added in 3DSMax/Blender as well?

1. Yes and no. Export/Save isn't possible with an imported model because too many values are null (I need to set them)

2. Yes. It builds the bone structure perfectly and you can even view it in the viewer, but I haven't rigged a model yet to test it with a mesh so I don't know if weights work yet, but they should.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Ricardo­ on March 29, 2011, 04:49:43 PM
That's good. Stage builders now have to use blocks and all with a single bone, and that isn't movement friendly. Moving stages like Delphino work on Brawl because they're a single model, a.k.a a bone in common.

We don't have many of these because of that.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 29, 2011, 05:04:00 PM
Ehhh 
So uh blackjacks....how close are we to being done with this piece of badasness?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 29, 2011, 05:32:36 PM
Ehhh 
So uh blackjacks....how close are we to being done with this piece of badasness?

Pretty damn close, let's just put it at that. But don't get your hopes up


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 29, 2011, 06:01:11 PM
Pretty damn close, let's just put it at that. But don't get your hopes up

Then don't say pretty damn close! lol

So what about a percentage? From your attitude...maybeee....around 65% or something?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 29, 2011, 06:15:08 PM
Then don't say pretty damn close! lol

So what about a percentage? From your attitude...maybeee....around 65% or something?

idrk, I guess


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 29, 2011, 06:19:45 PM
keep in mind though,
even though it's a single model,
it'd still have to have weights...

otherwise:
you'll move the bone, but the model won't link
the object (cube/sphere) must also be parented to the bone object :/

so yea, it must be parented, and have weights

you can however use object animations, or IPO's in blender terms
you won't need a bone to move or animate the object
^I think these would be shape animations in brawl >_>


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 29, 2011, 06:50:27 PM
That's good. Stage builders now have to use blocks and all with a single bone, and that isn't movement friendly. Moving stages like Delphino work on Brawl because they're a single model, a.k.a a bone in common.

We don't have many of these because of that.
Or, y'know, they could just import a stage model.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 29, 2011, 07:25:50 PM
Or, y'know, they could just import a stage model.

we're talking about stage models that don't exist :/

I just previously posted somewhat how to get one working either with
bone or object animation

granted there would be cubes or w/e that do exist in other stages,
but their materials worldn't work correctly, they'd have bone issues, etc...

so yea...
you never know what to really expect when using other models :/


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Ricardo­ on March 29, 2011, 08:04:11 PM
Or, y'know, they could just import a stage model.

He just said that even for simple models such as cubes/spheres there's a lot of work...
Imagine a stage like Mute City.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: TommoPuppy on March 30, 2011, 05:42:52 PM
Don't gang up on me. I meant in future when the converter works, what's the point of importing cubes when you could import entire models instead?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 30, 2011, 05:51:40 PM
Hey everyone quick update, I figured out how to create the correct headers for each node in the model but they're returning the wrong values, like 824327534 for the brres offset. I now know how to create instances of folders though so I just need to figure out this header issue (which will still probably take a while since I don't fully understand it yet) and that will automatically correct everything in the mdl0 so it can be saved/exported.

If you didn't understand anything I just said, it's ok lol


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Ricardo­ on March 30, 2011, 05:58:58 PM
Don't gang up on me. I meant in future when the converter works, what's the point of importing cubes when you could import entire models instead?

I know. But you're thinking too far in the future, while I'm on a thinking more in a short run.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 30, 2011, 05:59:29 PM
Hmm... as a fix, try running it through the auto-header fixer for imports (Probably terrible advise, but the worst thing it can to is not work)? Or can it not be saved at all in any form?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 30, 2011, 06:03:16 PM
Hmm... as a fix, try running it through the auto-header fixer for imports (Probably terrible advise, but the worst thing it can to is not work)? Or can it not be saved at all in any form?

It can't be exported or saved at all.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 30, 2011, 06:09:55 PM
Hmm. Well, maybe make the converter run through the steps that fix the header for imports, as a built in thing. I assume that you know those steps, but just in case (Credit for this goes to RandomTBush):
(http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial1b.png)
1. The bytes in dark grey need to be "00000009".
2. The bytes in green need to be "FFFFFF80".
3. The bytes in red need to be deleted.
4. The bytes in black need to be "FFFFFFC0".
(http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial2.png)

5. The top set of bytes in blue needs to match the bottom set. NOT THE OTHER WAY AROUND. (Apocolypse3000 takes the credit for finding out about this.)
(http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial3.png)

6. From the beginning of the MDL0 file, jump ahead by the amount of bytes (in hex, of course) in purple minus "0x0C". (In this case, it would be "0x0124".) This should take you to the definitions header.
(http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial4.png)

7. Now you should be at the definitions header. They usually are set to "00000048". Put three sets (or 0x0C bytes) of "FFFFFFFF" before this.
(http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial5.png)

And you're done... with the MDL0 header, that is.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 30, 2011, 06:20:35 PM
Ok, I'll pre-set those values in the struct for the mdl0 header (if they aren't set already)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 30, 2011, 06:29:41 PM
Let me know how it goes. Especially if it fails in some humorous way XD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Colter on March 30, 2011, 06:35:00 PM
My brain go hurt.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 30, 2011, 06:42:14 PM
Let me know how it goes. Especially if it fails in some humorous way XD

Well it won't be enough to fix everything, I'll tell you that >_< It'll just be a few extra values set correctly. I think the problem is because I'm rebuilding the entire model and not each group inside the model seperately. I'll try that


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 30, 2011, 06:45:44 PM
Sounds difficult.
I wish you luck in that!


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 30, 2011, 06:57:20 PM
Hmm. Well, maybe make the converter run through the steps that fix the header for imports, as a built in thing. I assume that you know those steps, but just in case (Credit for this goes to RandomTBush):
([url]http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial1b.png[/url])
1. The bytes in dark grey need to be "00000009".
2. The bytes in green need to be "FFFFFF80".
3. The bytes in red need to be deleted.
4. The bytes in black need to be "FFFFFFC0".
([url]http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial2.png[/url])

5. The top set of bytes in blue needs to match the bottom set. NOT THE OTHER WAY AROUND. (Apocolypse3000 takes the credit for finding out about this.)
([url]http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial3.png[/url])

6. From the beginning of the MDL0 file, jump ahead by the amount of bytes (in hex, of course) in purple minus "0x0C". (In this case, it would be "0x0124".) This should take you to the definitions header.
([url]http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial4.png[/url])

7. Now you should be at the definitions header. They usually are set to "00000048". Put three sets (or 0x0C bytes) of "FFFFFFFF" before this.
([url]http://img.photobucket.com/albums/v336/RandomTalkingBush/MDL0Tutorial5.png[/url])

And you're done... with the MDL0 header, that is.

I found this useful ;)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 30, 2011, 07:11:30 PM
There's more to the guide here:
http://www.smashboards.com/showthread.php?t=263127

There should be, down a bit into the original post, a thing that says:

Original text tutorial:
Hidden Message Show

Then click show.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 30, 2011, 07:18:24 PM
There's more to the guide here:
[url]http://www.smashboards.com/showthread.php?t=263127[/url]

There should be, down a bit into the original post, a thing that says:

Original text tutorial:
Hidden Message Show

Then click show.

yea thanx :)
hopefully I'll be able to implement support for multiple MDL0 header types...

otherwise, it'll be seperate MDL0 plugins >_>

but either way... it'll work ;)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 30, 2011, 08:15:11 PM
Wait, are you saying the model headder thing is the only thing stoping you??
That's epic news!

Wait, we're still talking about a mdl0/dae converter right XD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 30, 2011, 08:32:39 PM
Wait, are you saying the model headder thing is the only thing stoping you??
That's epic news!

Wait, we're still talking about a mdl0/dae converter right XD

no...
not at all
this is something for later...

the current thing stopping me is these stupid indexes :@

I can't seem to figure them out
and I can't get a proper model until they are figured out:

Pachi:
(http://lh6.ggpht.com/_IteXPmeC6ek/TXEAibtL8eI/AAAAAAAACfM/spewMupBedU/progress_img1.jpg)

Pika:
(http://lh3.ggpht.com/_IteXPmeC6ek/TXEAiH25vtI/AAAAAAAACfI/Pb4_uBR-jXY/progress_img2.jpg)

the indexes are being read properly,
but I think there's a manipulation value somewhere...

I'm trying to get them to look like a Will's export:

Pachi:
no Will's image :(

Pika:
(http://lh5.ggpht.com/_IteXPmeC6ek/TDslua7IU5I/AAAAAAAABPQ/RMxxPJnI-eo/s640/pika_import.jpg)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 30, 2011, 08:48:35 PM
Wait, are you saying the model headder thing is the only thing stoping you??

I'm pretty sure, but it's not as easy to fix as you might think. I can't just open a hex editor and change some values around. I have to MAKE and set the values from scratch using a system Kryal has set up that I don't fully understand yet...


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on March 30, 2011, 09:25:02 PM
well I never said it was an easy thing, I just figured it was the only thing lol


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: VILE on March 31, 2011, 01:35:09 AM

no...
not at all
this is something for later...

the current thing stopping me is these stupid indexes :@

I can't seem to figure them out
and I can't get a proper model until they are figured out:

Pachi:
([url]http://lh6.ggpht.com/_IteXPmeC6ek/TXEAibtL8eI/AAAAAAAACfM/spewMupBedU/progress_img1.jpg[/url])

Pika:
([url]http://lh3.ggpht.com/_IteXPmeC6ek/TXEAiH25vtI/AAAAAAAACfI/Pb4_uBR-jXY/progress_img2.jpg[/url])

the indexes are being read properly,
but I think there's a manipulation value somewhere...

I'm trying to get them to look like a Will's export:

Pachi:
no Will's image :(

Pika:
([url]http://lh5.ggpht.com/_IteXPmeC6ek/TDslua7IU5I/AAAAAAAABPQ/RMxxPJnI-eo/s640/pika_import.jpg[/url])


I'm not too sure what you are talking about Tcll and it is pretty likely you already know this, but the reason behind you exporting the raw vertex values and them looking screwed is because of the raw vertex values are the values of the vertices minus the changes being made by the bones.

That is why Will's converter only worked properly with trophy models, there was only 1 bone.

If you don't understand what I'm saying, I'll come to your chat tomorrow and explain it a little clearer. I could have sworn I brought this up a while ago.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on March 31, 2011, 04:14:57 AM
Strange, having 2 parallel projects on this.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 31, 2011, 07:53:57 AM
Strange, having 2 parallel projects on this.

it's not really parallel :/

his only does a single conversion...

mine handles multiple conversions for almost any file type...

I need to redo a few functions though DX<


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on March 31, 2011, 05:07:23 PM

it's not really parallel :/

his only does a single conversion...

mine handles multiple conversions for almost any file type...

I need to redo a few functions though DX<

Who said I wasn't going to add import/export for other model types when I was done X)
I'll know most of the model parsing code like the back of my hand by then :D


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Ultraxwing on March 31, 2011, 05:27:17 PM
Maybe you can make it work with GMAX (i mean, i have to wait another 2 to 3 months for my own copy of 3DS max.)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on March 31, 2011, 07:40:49 PM
I'll be looking into the .blend format for 248, 249, and 26# (when it's released)
right now it's on the beta series (2.56)...

please add blend support ;_;

I had to reinstall windows again after installing (testing) 3DS on my comp...
still get random blue screens

although for some good news:
1 comp + 2 monitors + ~1 TV = 1 BA comp >:3
I'm loving my new NVidia 8400 GS card 8)
<3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3
^spam FTW
got my chat open on the other monitor :af:

tried to get my TV working, but this one's giving me probs...
oh well >_>


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 05, 2011, 07:38:37 PM
anyone know where the src is to SZS Modifier??

I've tried looking, and have nad failure the entire way DX


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: dark sonic 19 on April 05, 2011, 08:02:51 PM
This my not be it but is it this?
http://gbatemp.net/index.php?showtopic=198407


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 05, 2011, 08:37:22 PM
sry DS
that's just the prog... -_-


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 06, 2011, 09:54:46 AM
looked into the YAGCD again...
this time I actually understood some crap

the registers are (as expected) the same,
but the YAGCD has more [understandable] info on them than the Brbx src and wii SDK combined

thus, I'm appending an extension to my MDL0 plugin...
'NtdoCmn.py'
this is all the common formattings and function types of the Wii and GCN combined

if anyone would like to build a gcn/wii model plugin once the release comes,
that's an important extension you'll want to include.

note: after my first release, I may do a complete overhaul of my code
(meaning I'll be redoing everything)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 11:44:15 AM
WOOT!!!!

finally some progress :D
details here: http://www.smashboards.com/showpost.php?p=12513505&postcount=38

Revel8n srs gets credit in this
he has been the one able to fix my broken work :D
so congrats go to him :)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SSJCerious on April 10, 2011, 11:50:09 AM
:patrick:
So the only thing left needed in your model converter is the texture part?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 10, 2011, 11:55:28 AM
No that was fixed a long time ago.

The only part left, and the hardest part, is calculating all the values that you see on the right when you click on a node. Right now, those values are incorrect and not allowing export or save to work.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SSJCerious on April 10, 2011, 12:05:33 PM
Ahh, sounds like tedious work. Good luck you guys!


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Velen on April 10, 2011, 12:07:57 PM
Damn...Looks like I should maybe figure out how make my own models then...

Like maybe making a Mega Man model?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 12:23:23 PM
:patrick:
So the only thing left needed in your model converter is the texture part?


pretty much ^_^
textures ad materials...
after figuring out the objects :)

but those will be the most complicated part, and will require the most programming...
like (2:3) * current code

melee's DAT format is a pain though
I have to generate custom strings for the names for everything


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 10, 2011, 12:27:54 PM
I think if anyone's gonna talk about Tcll's converter, they should quote him or else I'll think they're responding to the OP lol


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 12:39:11 PM
I think if anyone's gonna talk about Tcll's converter, they should quote him or else I'll think they're responding to the OP lol

I thought it was kinda obvious... heh

1: after the users post
2: reflected on details of the user's post
3: had- lost the 3rd point XP

but yea...
but they should state whome they're responding to :/


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Velen on April 10, 2011, 12:42:36 PM
So, TCLL.

Using this, could we make our own models form scratch and possibly use them in the game?

Like, say I make a MMZ model in 3DSMAX, and rig it, can I import him into BB using the converter?

What work would, consequently, be needed to make it work in Brawl, aside from the obvious of needing to make animations from scratch, and how much time would such a project take to complete?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 10, 2011, 12:44:55 PM
Maybe #3 was "Quotes the user's post" XD

Above post lol - Yes; yes; same as always; as long as it takes you to import a model normally.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Velen on April 10, 2011, 12:49:50 PM
Maybe #3 was "Quotes the user's post" XD

Above post lol - Yes; yes; same as always; as long as it takes you to import a model normally.

Then if that is so...

Oh baby. It means we could take models that have no bones for certain things and make their models from scratch in 3DSMAX in order to add them.

I can see "The Master" from Paper Mario being within reach...


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 10, 2011, 12:52:42 PM
Haha yep just about anything will be possible when either my or Tcll's converter is done ;)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 01:20:25 PM
Haha yep just about anything will be possible when either my or Tcll's converter is done ;)

you may want to think about literally taking brawlbox over,
if you want to go through with that :/

the entire system of Brbx will need to be redone...
as there's alot more commands for the CP, XF, and BP registers...
(IDK why Kryal didn't include all of them)

not to mention that for conversion,
would need to have a seperate class for each file format
(if you're supporting multiple types like I am)

as for me,
I've got alot of work to do with getting the weights working on my global format
(after I finish the indexing of course)

this converter is really just for converting model files...

meaning you should be able to take a brawl char,
and convert it to a format supported by the plugins...
^(currently MDL0 -> OBJ)

right now, you can simply just use it for my vertexing method,
as it's better than Will's...
(I'll add a simple export option if you want a simple vert/norm/uv/face model (untransformed))
^the complex option will allow transforms to be applied...
(this will export a transformed obj where say Pikachu is in his regular T-Pose)
^but because of the transforms, won't work with my vertexing method as the vectors will be given new values

I'll see if I can't build a 'No Transform' option...
basically, the model will be in it's original T-pose, and still workable in brawl
instead of being transformed like in my images

meaning vertexing would be alot easier for my method,
since the vectors would be in their appropriate positions
(as in edit mode in a modelling program)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 01:38:32 PM
btw...

with my converter,
you shouldn't have to be subject to limitations like keeping the same number of polygons...

if you export it from an editor, you should be able to import it into brawl :)

take my custom game character Riku for example...
the only limitation I'd have to make for him is (since I'm putting him over Pikachu) making sure I have the bones brawl uses, while keeping the controller bones seperate

I could then animate him however the heck I wanted >:D
with a few restrictions of course :/

FINALLY
I'll be able to actually test my game developing skills :happy:
^I hope no-one forgot I'm training myself in game development :/

EDIT:
I'll be doing the same to Melee Pichu as well...
but my ultimate objective for him is literally adding him to brawl
(along with the rest of the 5)

I wanna try to put Bomberman in as well...
as he does deserve the place he once had :/


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Velen on April 10, 2011, 01:51:18 PM
Literally half your first post went over my head.

Also.

Quote from: Tcll
take my custom game character Riku for example...
the only limitation I'd have to make for him is (since I'm putting him over Pikachu) making sure I have the bones brawl uses, while keeping the controller bones seperate

I could then animate him however the heck I wanted
with a few restrictions of course :/

Explain the bolded and bold underlined concisely please?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 02:04:50 PM
Explain the bolded and bold underlined concisely please?

this should answer the first part: (controller bones)
http://brawlimports.proboards.com/index.cgi?action=gotopost&board=123145&thread=6&post=31
the controller bones are what control or morph the model (in green)
the brawl required bones will have no effect on the model, (in yellow)
but will act as placeholders to keep the game from freezing.
note: be sure not to touch or move any brawl bones when animating using this method,
and be sure to have the controller bones named differently when adding them to the CHR0

as for the restrictions:
-when animating, be sure not to change the frame-length
-watch your file-size, and be sure not to go over the disk quota of 7.92GB
 ^if you do go over, you can replace a few songs you don't use with blanks


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Velen on April 10, 2011, 02:09:49 PM

this should answer the first part: (controller bones)
[url]http://brawlimports.proboards.com/index.cgi?action=gotopost&board=123145&thread=6&post=31[/url]
the controller bones are what control or morph the model (in green)
the brawl required bones will have no effect on the model, (in yellow)
but will act as placeholders to keep the game from freezing.
note: be sure not to touch or move any brawl bones when animating using this method,
and be sure to have the controller bones named differently when adding them to the CHR0

as for the restrictions:
-when animating, be sure not to change the frame-length
-watch your file-size, and be sure not to go over the disk quota of 7.92GB
 ^if you do go over, you can replace a few songs you don't use with blanks


Hmm....Sounds quite tricky to deal with.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Difegue on April 10, 2011, 02:12:18 PM
Not really, just use the bone adder program on your freshly-converted Mdl0 and rename the bones accordingly.
Excited for this btw, I have Shiraishi Minoru's 3D model and I could try some cool stage imports...


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Velen on April 10, 2011, 02:14:58 PM
Not really, just use the bone adder program on your freshly-converted Mdl0 and rename the bones accordingly.
Excited for this btw, I have Shiraishi Minoru's 3D model and I could try some cool stage imports...

Well, I don't have the bone adder program (at least I think I don't).

This has inspired me to want to try making Sabrina over PKMN Trainer with a custom model, using the PKMN Trainer model as a size reference.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 02:16:47 PM
Not really, just use the bone adder program on your freshly-converted Mdl0 and rename the bones accordingly.
Excited for this btw, I have Shiraishi Minoru's 3D model and I could try some cool stage imports...
NO!
FW's makes a copy of the entire MDL0 and places it at the end of the data

and because of that, this method is still... well... untested...
I did do a test using FW's and TSG's BTE
(needed 5 bones added before the first bone (TopN:HipN))
the outcome was a freeze before starting the battle

EDIT:
not to mention FW's doesn't change all the data needed...
^talking about the relocation group

it only changes the 2nd group leading to the 2nd tree,
but it copies the values from the last bone to use for the added bones


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Difegue on April 10, 2011, 02:19:14 PM
welp I didn't know, I thought the bone adder fixed all import problems :V Do you have to hex them in or something, then?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 02:21:30 PM
welp I didn't know, I thought the bone adder fixed all import problems :V Do you have to hex them in or something, then?
yes...
but I refuse to by hand as it would mean redoing every one of the offset mappings...

and there's quite alot for just a single object with a single material...

EDIT:
I'm getting tired of waiting for TSG's release :srs:
the previous one has a save error that's fixed the next one,
bu the next one also adds bones the proper way


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Difegue on April 10, 2011, 02:24:33 PM
Ah, I see. Besides, it would piss off everyone doing imports to have to rehex 15+ offsets, derp
Automation is a no-brainer on that one :p


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SSJCerious on April 10, 2011, 02:31:02 PM
I'm getting tired of waiting for TSG's release :srs:
the previous one has a save error that's fixed the next one,
bu the next one also adds bones the proper way
Already told you, waiting on Shyguy is a dumb move, he doesnt want to come back to brawl hacking. He said it wastes too much time, and his grades are in the [censored]ter anyway.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 02:38:04 PM
Already told you, waiting on Shyguy is a dumb move, he doesnt want to come back to brawl hacking. He said it wastes too much time, and his grades are in the [censored]ter anyway.
so that's what happened to him :o

then who the F is gonna- wait
BJ said he's doing it... just not as much as the converter

is bone tree editing done at least BJ?? :/

I'd prog one if I could...
I've got way too many projects going for me right now so yea...
(being a member of 2 hacking communities) heh


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 10, 2011, 02:43:41 PM
I'm getting tired of waiting for TSG's release :srs:
the previous one has a save error that's fixed the next one,
bu the next one also adds bones the proper way

The beta version works just fine, it just takes a lot of trial and error to get the bones in the correct place. I used it to fix Nel's bone structure back when she was over Wario.

is bone tree editing done at least BJ?? :/

Not yet.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SSJCerious on April 10, 2011, 02:46:27 PM
BlackJax, YOU GOT THE BTE TO SAVE FOR NEL??? HOW???


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 10, 2011, 02:49:44 PM
BlackJax, YOU GOT THE BTE TO SAVE FOR NEL??? HOW???

Not the version with the tree editor. The very first version he released (beta).


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SSJCerious on April 10, 2011, 02:53:01 PM
Aww......what's the difference again? XD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 10, 2011, 02:55:45 PM
I dunno if he still has it in his thread but luckily I saved a backup lol:

http://www.mediafire.com/file/gmfpkn7pnrb1wd1/Bone%20Editor.exe


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 02:56:42 PM
Aww......what's the difference again? XD

really bad GUI vs really good GUI


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: SSJCerious on April 10, 2011, 03:00:47 PM
:'(
Oh well, Im better off waiting for someone else to come along and finish it


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 07:38:44 PM
heh
redoing my code, compairing it to revel's

revel kinda messed up a few needed things :/
but I'll try to incorporate those in the edit...

I found a few derps I needed to fix as well,
which boosted the look by alot, but not fully...
I'm using a bit of revel's code to finish the job...

he actually helped me shorten my code a little :D


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 10, 2011, 07:47:07 PM

hmm...
I think I'm going to log the transforms in my tmp format,
instead of applying them before logging the verts...
this is to allow them to be applied via the export GUI of the obj format
(will currently be unchecked by default)

btw...
when exporting MDL0 (not in this release)
the option to apply transforms will only be experimental


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 12, 2011, 12:58:11 PM
hmm...
well...
crap...

I was supposed to make my release today...
but you can thank game&watch for screwing that up...
(http://lh6.ggpht.com/_IteXPmeC6ek/TaSfznVT-rI/AAAAAAAACtI/-vFMxuFCnq0/GW1113KB.jpg)
so I have a few corrections to make to my code...

although Will's couldn't even work with GW >_>
so I guess it's still better :/

but yea...
I'm gonna try to fix these first

btw, his obj is 1,113 KB... (1.1 MB)
(the largest filesize so far)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Difegue on April 12, 2011, 03:44:07 PM
g&w is the biggest troll
Still, if I understood correctly, the release will export .mdl0 to .obj, but won't import?




Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 12, 2011, 03:56:05 PM
g&w is the biggest troll
Still, if I understood correctly, the release will export .mdl0 to .obj, but won't import?
yea... that's right -_-
only for now...

I've got alot of formats to add before the main release...
but at least once you have the program, all you'll have to do is DL the UD'd plugins :)

I'm getting export to DAE after I get the MTL compleated...
I think I'll export to 141 since I have more documentation on that...

speaking of... if anyone would like to help :)
I need more docs on DAE 140...
the one I have sux -_-


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Velen on April 12, 2011, 04:20:47 PM
yea... that's right -_-
only for now...

I've got alot of formats to add before the main release...
but at least once you have the program, all you'll have to do is DL the UD'd plugins :)

I'm getting export to DAE after I get the MTL compleated...
I think I'll export to 141 since I have more documentation on that...

speaking of... if anyone would like to help :)
I need more docs on DAE 140...
the one I have sux -_-

UD'd Plugins?


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 12, 2011, 04:30:48 PM
UD'd Plugins?
UpDated...

anyways...
so far I've gotten it >D
(http://lh3.ggpht.com/_IteXPmeC6ek/TaTREIAW1kI/AAAAAAAACtY/p3tBqlLCU9Q/GW_fin.jpg)

I'm gonna run a few more tests, and try to fix the normals...
but I should have the Alpha release by late tomorrow...
^only for use with my vertexing method... heh

I'll have to make a new tut on it again... -_-

but yea...
that means GW (or any char) can now be vertexed easily...
^(hopefully... (havn't tested that much))


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: ForOhFor Error on April 12, 2011, 04:34:23 PM
Sweet.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 13, 2011, 05:00:58 PM
Little progress update:

(http://i.imgur.com/SGv7i.jpg)
(http://i.imgur.com/UQOYj.jpg)

Nel converted to dae with AiS 1.3; imported, fixed and exported from 3ds max; and re-imported using Brawlbox.

The obvious problem is apparently the transforms.

The weights and bones work perfectly though so that's great news :D


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on April 13, 2011, 05:29:58 PM
So wait, this means we're one step closer? ^+^
sounds good =3


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 13, 2011, 06:33:22 PM
Anybody want to try to manually fix this brres? (I got the above example to export, with the messed up values)

http://www.mediafire.com/?h3ki0cl5d8b91x7 (http://www.mediafire.com/?h3ki0cl5d8b91x7)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: dark sonic 19 on April 13, 2011, 06:56:08 PM
I will try to fix it ;D


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 13, 2011, 07:07:09 PM
I've made my release :)

look on this board ;)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on April 13, 2011, 07:38:03 PM
Okay.
I know this is going to sound troublesome buuut...
Could anyone make a pictoral tutorial on how to use these tools to do these things?

Remove the exsisting bone structure from the character that isn't made to be playable in brawl. (For example an assist trophy)
Rip the bone structure from a brawl character with a good bipedal setup.(for example, Mario or captain falcon)
Rig the model from the other character with the bones from the brawl character in 3DS max.

Note that I said Pictoral, because a video tutorial can be a hassle to follow, particularly if you have to go back to a normal step.

I am asking this because I want to try and make a certain character from a certain stage have a psa over captain falcon.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 13, 2011, 07:43:25 PM
Okay.
I know this is going to sound troublesome buuut...
Could anyone make a pictoral tutorial on how to use these tools to do these things?

Remove the exsisting bone structure from the character that isn't made to be playable in brawl. (For example an assist trophy)
Rip the bone structure from a brawl character with a good bipedal setup.(for example, Mario or captain falcon)
Rig the model from the other character with the bones from the brawl character in 3DS max.

Note that I said Pictoral, because a video tutorial can be a hassle to follow, particularly if you have to go back to a normal step.

I am asking this because I want to try and make a certain character from a certain stage have a psa over captain falcon.

I don't think that's possible quite yet...
I mean... using a trophie,
you'd have to delete the existing weights and make your own :/

that would require my official release (not the unofficial alpha release)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on April 13, 2011, 07:52:03 PM
Well I'm thinking of using a character from a stage, rather than an assist trophy, and he's got a build similar to 3XD's bone structure.

I MIGHT use a character from a game, he's got very few bones for a tales of character (125) and ripping the skeleton and porting say, marios skeleton onto him would be easy. Of course I would need to figure out a way to animate his kandama ^+^


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: DarkPikachu on April 13, 2011, 08:04:58 PM
Well I'm thinking of using a character from a stage, rather than an assist trophy, and he's got a build similar to 3XD's bone structure.

I MIGHT use a character from a game, he's got very few bones for a tales of character (125) and ripping the skeleton and porting say, marios skeleton onto him would be easy. Of course I would need to figure out a way to animate his kandama ^+^

still... same rule applies...
you're changing the rig, thus you have to change the weights to fit the rig

I may not be an official gam developer...
(yes I'm calling myself a wanabe)
but I sure as heck know quite a bit about doing it.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Psycho Philia on April 13, 2011, 09:27:49 PM
And anyway, if you were able to do something like this, you would probably lose the ability to truly make animations with the hair. Which is not a real problem for Genis, it would be a better problem for characters like Richter or Zelos as they have long hair. But still, how would be able to animate the kendama as Mario doesn't have any weapon? You can put Marth's body, but he wields a sword, not a kendama, and I saw the structure of the kendama, it is really different... So even if it was possible, you would probably have problems. Not counting the fact that for now, you still can't use Genis's model. (or maybe you found a way to fix it?)


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on April 13, 2011, 09:32:24 PM
Okay, what about this.
I take a model from a game.
Remove the current bone rigging from it.
Apply a NEW bone rigging via 3DS max
Fix the weights to fit the new rig.
Rename the new bones brawl-style.(Hip N, Trans N, etc)
Get it to work in brawlbox
get it to work in game


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 13, 2011, 09:35:01 PM
Are you guys forgetting that you can just add/move bones to/in a brawl skeleton and then rig it to your model...

You just have to animate those parts you added once it's converted.

Okay, what about this.
I take a model from a game.
Remove the current bone rigging from it.
Apply a NEW bone rigging via 3DS max
Fix the weights to fit the new rig.
Rename the new bones brawl-style.(Hip N, Trans N, etc)
Get it to work in brawlbox
get it to work in game

Yes.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: Naruto200Man on April 13, 2011, 09:49:03 PM
Okay, if that one is possible, then could someone make a tut for it? XD
Cause I REELY wanna do either Genis or Marta =3
Even if it's just a model import XD


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: VILE on April 13, 2011, 11:27:27 PM
Okay, if that one is possible, then could someone make a tut for it? XD
Cause I REELY wanna do either Genis or Marta =3
Even if it's just a model import XD

It's possible, but brute forcing it would take 10x longer than it would making a model importer.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: BlackJax96 on April 14, 2011, 09:07:55 PM
Fixed the transforms. I swear this is not the original mdl0; it was completely rebuilt by Brawlbox.
(http://i.imgur.com/IENx9.jpg)

Now please excuse me while I put how awesome I think this progress is in the spoiler below.
HOLY SH*T THIS IS SO CLOSE TO DONE, YOU HAVE NO FREAKIN IDEA!!!!! AAAAAAHHHHH!!!!!!!!!1

I'm gonna rig a non-mdl0 this weekend and test that.


Title: Re: DAE to MDL0 Conversion: Mesh & Textures IMPORTED!!! Check OP
Post by: VILE on April 14, 2011, 09:15:31 PM
derp


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: Mansta8 on April 14, 2011, 09:23:26 PM
You called? XD
Sorry I cant help with this, I understand some C++ but mostly it just hurts my head so I just don't do it.


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: Beyond on April 14, 2011, 09:41:09 PM
Fixed the transforms. I swear this is not the original mdl0; it was completely rebuilt by Brawlbox.
([url]http://i.imgur.com/IENx9.jpg[/url])

Now please excuse me while I put how awesome I think this progress is in the spoiler below.
HOLY SH*T THIS IS SO CLOSE TO DONE, YOU HAVE NO FREAKIN IDEA!!!!! AAAAAAHHHHH!!!!!!!!!1

I'm gonna rig a non-mdl0 this weekend and test that.


:srs: I love you.


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: Naruto200Man on April 14, 2011, 09:42:49 PM
ALLOW ME TO SAY THIS

WTFBOOOOOOOOOM!

That is all XD

Dude, does this mean I will be able to take a mdlo from another character and rig it for a different character?

IE Take ZSS's model and rig it to work on say ike?


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: BlackJax96 on April 14, 2011, 09:45:50 PM
ALLOW ME TO SAY THIS

WTFBOOOOOOOOOM!

That is all XD

Dude, does this mean I will be able to take a mdlo from another character and rig it for a different character?

IE Take ZSS's model and rig it to work on say ike?

Yeah but what's the point, you'll have to edit the bone structure to fit the other model and then you'll just wind up with basically the same bone structure as before...


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: DarkPikachu on April 14, 2011, 09:51:58 PM
great job :)

I think both of us have shown decent (you're better) progress lately

I'm only slower because I have to deal with so many dang 3D formats :oshi:
I'm dealing with 3 just from mdl0 to obj alone


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: Naruto200Man on April 14, 2011, 09:54:55 PM
Yes

but I'd be able to port any character over any other character with no problems?
IE
Trans N
Have N
Thrown N
Hip N
Tiny Shield
etc
All those glitches gone? That's my point :D

I actually want to make the Bulkiban guy from the bridge of eldin stage. A psa for him would be hilarious.

What I mean is
Take the MODEL from Character A
Then Rig it with the BONES from character B, by placing the model from character A on character B's bones.
Thus creating a flawless port. X_X

Or just take an OBJ file of a model from brawl and rig it with someone elses bones using that method XP


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: BlackJax96 on April 14, 2011, 10:16:40 PM
Oh well then yes, you would have a flawless port I guess O_o


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: Naruto200Man on April 14, 2011, 10:23:26 PM
Oh well then yes, you would have a flawless port I guess O_o

DING DING!
Tell the us what the man won sherry! :D

Sherry: FUK OFF >=D

Sherry....*sigh*

XD

sorry I'm hyper atm.

Eh
Can't wait to see this finished, expect some major testing from me >=D
When it's done you should totally upload it to BV :D


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: RandomTBush on April 14, 2011, 11:00:10 PM
*does a couple of flips in the air*

May I please beta test it when you've got it to save everything properly? I mean, I have worked with the MDL0 format before and made a couple of custom ones, so I'd like to see how it'd work out with my experiments.


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: Velen on April 14, 2011, 11:19:50 PM
*does a couple of flips in the air*

May I please beta test it when you've got it to save everything properly? I mean, I have worked with the MDL0 format before and made a couple of custom ones, so I'd like to see how it'd work out with my experiments.

O_O

Will you share your findings with me? I need motivation to get into vertexing and getting good at it.


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: VILE on April 14, 2011, 11:34:12 PM
O_O

Will you share your findings with me? I need motivation to get into vertexing and getting good at it.

This isn't vertex editing, this is building a model from scratch. You will need a lot more skills than just moving around vertices now.


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: RandomTBush on April 14, 2011, 11:35:07 PM
O_O

Will you share your findings with me? I need motivation to get into vertexing and getting good at it.
I mentioned the main way how I've done so before around this forum, but I really need to be more specific if anyone wants to attempt to make their own (since nobody understood the techno-jargon in my post).


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: Velen on April 15, 2011, 12:27:06 AM
I mentioned the main way how I've done so before around this forum, but I really need to be more specific if anyone wants to attempt to make their own (since nobody understood the techno-jargon in my post).

Acutally, it would be easier if you made simple explanations of that "Techno-Jargon" for the people who don't understand it.

Partly because they lack experience in it to begin with.


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: RandomTBush on April 15, 2011, 12:32:38 AM
Acutally, it would be easier if you made simple explanations of that "Techno-Jargon" for the people who don't understand it.

Partly because they lack experience in it to begin with.
In simple terms, it involves a bunch of value conversions (to float values for the vertices/normals/UVs and hex for the polygon values) and also tons and tons of re-linking offsets in the MDL0. All kinds of manual work, ya see.

But with the model exporter being close to completion, I don't know if I need to explain everything yet, especially since my method doesn't work with rigging for the models (hence why it's only been two hats and a sandvich that I've ported.)


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: VILE on April 15, 2011, 01:45:35 AM
I mentioned the main way how I've done so before around this forum, but I really need to be more specific if anyone wants to attempt to make their own (since nobody understood the techno-jargon in my post).

I understood :P


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: ds22 on April 15, 2011, 02:47:53 AM
Very, VERY nice progress BlackJax96.
Hope this will also work with full bone replacement, since having a Naruto directly from GNT EX3 with FULL Ike boneset would be very nice.


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: Velen on April 15, 2011, 03:53:21 AM
Very, VERY nice progress BlackJax96.
Hope this will also work with full bone replacement, since having a Naruto directly from GNT EX3 with FULL Ike boneset would be very nice.

It also means we could possiblt make our own models in 3DSMAX, rig them, then import them into Brawl.

THINK ABOUT IT!...

Oh wait. Then everyone will bring their own characters into Brawl...

OH ****!!!


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: ForOhFor Error on April 15, 2011, 04:25:25 AM
Awesome. So close to being done...
:D
Gonna import some awesome stages!

So.... all that's needed is saving them?


Title: Re: DAE to MDL0 Conversion: DAE Perfectly Imported >:D Working On Export/Save Now!
Post by: ds22 on April 15, 2011, 05:29:38 AM
It also means we could possiblt make our own models in 3DSMAX, rig them, then import them into Brawl.

THINK ABOUT IT!...

Oh wait. Then everyone will bring their own characters into Brawl...

OH ****!!!
Well yeah.
But I do hope either someone with experience will do it fo