Home Gallery Resources The Team Rules chat Login Register
Pages:  1 ... 11 12 13 [14] 15 16 17 ... 33
Author Topic: Vertex Hacking: Advanced Techniques  (Read 125645 times)
0 Members and 1 Guest are viewing this topic.
Power Marshall
-JDeLL~
Special Access
*****
Offline Offline

Posts: 622


  • Awards Hot Topic Heart Container Dedicated Hacker Tutorial Writer

  • View Profile WWW Awards
    « Reply #195 on: June 30, 2010, 08:33:47 AM »


    Here you go, MeleeMaster: A Snake DAE file.

    Hopefully that is what you want... not sure about Windows7 and why it does not work... never tried it, heh. But if you need any other DAEs, I can help with simply that.

    File: http://www.mediafire.com/download.php?tnoyyn0mmjn
    Logged

    Want to learn about my new project? Click here!
    Updated 1/18


    owned645
    Mega Kitten
    *****
    Offline Offline

    Posts: 111


  • Awards Dedicated Hacker

  • View Profile Awards
    « Reply #196 on: June 30, 2010, 01:57:34 PM »


    I just cant get AiS to work, probably because im running windows 7 64bit, and is saying that "ais.exe has stopped working".

    anyways, anyone know how to solve this and/or can give me snakes model as dae?

    im pretty sure I can follow everything else from there

    It does that for me too. I just drag the brres file onto the application and the dae will apear in the folder with the brres.
    Logged


    mariokart64n
    Hacker & 2D/3D Modder
    Supreme Kitten
    ********
    Offline Offline

    Posts: 543


    All Hail To The Mario Baby!

  • Awards Super Saiyan Topic Heart Container Famous Hacker Favorite'd

  • View Profile Awards
    « Reply #197 on: June 30, 2010, 03:03:39 PM »


    brawlbox 0.64 seems to have a built in DAE exporter based on AIS's code. if brawlbox runs on your system. download the latest source code, and compile it for your windows. thats the only solution for AIS and a 64bit OS

    personally I'm using winXP 32bit, so i have no problems
    Logged

    Luka Megurine by mariokart64n
    [Character-ImportModel-Zelda]

    Rikami
    Advanced Kitten
    ***
    Offline Offline

    Posts: 29


    View Profile Awards
    « Reply #198 on: July 01, 2010, 10:10:04 AM »


    Hey mariokart, me again.
    So I did a lot of work on a vertex hack for marth.
    But now when I export it and run it though DDB it errors in brawbox; preview won't even work.

    I know you're busy but if you could just check it for me that would be nice.
    I checked and the number of vertices and faces are the same.
    Also I get some java error in DDB only when inserting.

    Here's my file: http://www.mediafire.com/?dmjy2wiyyxt
    Logged

    Power Marshall
    -JDeLL~
    Special Access
    *****
    Offline Offline

    Posts: 622


  • Awards Hot Topic Heart Container Dedicated Hacker Tutorial Writer

  • View Profile WWW Awards
    « Reply #199 on: July 01, 2010, 01:32:28 PM »


    Rikami, did you know Mariokart64n's Script was updated?
    DDVB has therefore no need for use, because his script now supports exportation of verts!

    Not so sure if you knew... maybe that will help.
    Logged

    Want to learn about my new project? Click here!
    Updated 1/18


    Yoshiboshi3
    Extreme Kitten
    *******
    Offline Offline

    Posts: 391


    Hey guys im yoshiboshi3 i maik vertex hacks

  • Awards Hot Topic Tutorial Writer

  • View Profile Awards
    « Reply #200 on: July 01, 2010, 02:37:14 PM »


    Rikami, did you know Mariokart64n's Script was updated?
    DDVB has therefore no need for use, because his script now supports exportation of verts!

    Not so sure if you knew... maybe that will help.

    If DDB gives a "java" error, its not going to work. Its not DDB's fault, something messed up with the vertex set.
    Logged

    STILL BETTER AT VEXING THAN TEXING

    mariokart64n
    Hacker & 2D/3D Modder
    Supreme Kitten
    ********
    Offline Offline

    Posts: 543


    All Hail To The Mario Baby!

  • Awards Super Saiyan Topic Heart Container Famous Hacker Favorite'd

  • View Profile Awards
    « Reply #201 on: July 01, 2010, 05:02:45 PM »


    errors, like "there was a weird java error" is why I eliminated the need for DDVB. unfortunately many have complained about the complexity of my method. I say take it or leave it, alot of info is here. just take the time to learn, be patient and it'll all come to you in time.

    anyway did a video, it'll show you what I did with your max file. you can pickup the process from that.

    <a href="http://www.youtube.com/watch?v=nVQl-9m1vXM" target="_blank" class="aeva_link bbc_link new_win">http://www.youtube.com/watch?v=nVQl-9m1vXM</a>


    EDIT

    I found a topic showing off OBJ injection at the smashboards, I did a quick google, and found a mario kart Wii tool that does just that. I'm not sure if its the same one the users are using on smashboards. but I'll experiment more with it and see if I can't inject an obj file

    http://www.mariokartwii.com/f7/official-mario-kart-wii-model-hacking-new-39114.html
    « Last Edit: July 01, 2010, 07:28:33 PM by mariokart64n » Logged

    Luka Megurine by mariokart64n
    [Character-ImportModel-Zelda]

    Rikami
    Advanced Kitten
    ***
    Offline Offline

    Posts: 29


    View Profile Awards
    « Reply #202 on: July 02, 2010, 02:15:09 AM »


    Well after like 10 tries I finally got this down.
    Thanks for the video, It helped greatly.
    I'm kinda glad you didn't just give me the file because now I learned how to do it myself.
    I'll be sure to give you tons of credit when I release this.
    I'm working on a Castlevania Cornell Marth
    Logged

    ShadowSnake
    Venomous Hacker
    Heroic Kitten
    **
    Offline Offline

    Posts: 2786


    Back from the dead to mod Smash-U

  • Awards Infinite Smash Team Star Hacker Starstormer KCMM Veteran

  • View Profile WWW Awards
    « Reply #203 on: July 02, 2010, 06:26:15 PM »



    I found a topic showing off OBJ injection at the smashboards, I did a quick google, and found a mario kart Wii tool that does just that. I'm not sure if its the same one the users are using on smashboards. but I'll experiment more with it and see if I can't inject an obj file

    http://www.mariokartwii.com/f7/official-mario-kart-wii-model-hacking-new-39114.html


    @ mariokart64n

    I saw that yesterday on smashboards, are u planning to inject as a DAE so it can go over a model? if u figure that out, u will be the one who completed brawl hacking.
    Logged

    I DONT TAKE REQUESTS.


    mariokart64n
    Hacker & 2D/3D Modder
    Supreme Kitten
    ********
    Offline Offline

    Posts: 543


    All Hail To The Mario Baby!

  • Awards Super Saiyan Topic Heart Container Famous Hacker Favorite'd

  • View Profile Awards
    « Reply #204 on: July 02, 2010, 06:50:25 PM »


    I would have to make a tool from scratch, I have no desire for that.
    Logged

    Luka Megurine by mariokart64n
    [Character-ImportModel-Zelda]

    Eternal Yoshi
    Heroic Kitten
    **
    Offline Offline

    Posts: 2425


    Boss? Is that you?

  • Awards KCMM Old Timer Super Saiyan Topic Active Contributor Former PMDT

  • View Profile Awards
    « Reply #205 on: July 02, 2010, 10:09:16 PM »


    Thank you for eliminating the need for DDV. The fact that many stage parts have vertex sets that don't get along with DDV output errors upon importing was annoying.

    The model I'm trying to vertex hack Marth to is not T-stanced.
    I hear rigging it can help solve my problem.
    How would I go about rigging a .obj model?
    Logged


    Vish
    Global Moderator
    *****
    Offline Offline

    Posts: 1203


  • Awards KCMM Storyteller Super Saiyan Topic 128-bit Core Gamer Cookie Clicker!

  • View Profile Awards
    « Reply #206 on: July 03, 2010, 01:26:29 PM »


    When I export the vertices to the model, I get "ERROR! Wrong Offset!" D:

    I put the MDL0 Offset from the vertex set.

    EDIT: Never mind. It worked when I unchecked read offset from file.

    Also, mariokart do you mind putting this in the first post?

    I made a text tutorial of how to do this since people in the KCMM family thread (in the off-topic board) wanted a detailed one so they can go at their own pace instead of the vid.

    I know Yoshiboshi made one, but his is sort of outdated.

    How to do the new vertex method without DasDonkey Vertex Box
    (+ Without Patching)

    In this tutorial I'm going to be making Ness' head bigger. You can do whatever you want, but this is just an example. Mariokart's new script makes it so DasDonkey Vertex box isn't needed anymore, and the only tutorials that mariokart has up are videos, so this is for people who want to take things at their own pace. The reason why it's good to not use DasDonkey Vertex Box anymore, is that vertex sets that previously didn't work (Peach's crown, Pokemon Trainer's hat/hair, etc) should work now.

    First, export the .brres of the first model data.



    You'll need to download AiS which converts the .brres into a .dae, so you can open it in 3DS max. For this to work, make sure that the .brres contains a model which is unedited. If it is edited, then AiS will not work and will simply make a log file. You can download AiS here: http://cid-c59ea3c98a300f31.skydrive.live.com/self.aspx/.Public/Programs/ais0.1.3.zip

    Next, export the vertex group that you want to edit in Brawlbox.



    Now open 3DS Max 8 (and note that this only works in Max 8 not 9, 2008, 2009 or 2010), and run mariokart64n's script:

    Code:
    fn readBEshort fstream = (
    short = readshort fstream #unsigned
    short = bit.swapBytes short 1 2
    return short
    )
    fn readBElong fstream = (
    long = readlong fstream
    long = bit.swapBytes long 1 4
    long = bit.swapBytes long 2 3
    return long
    )
    fn ReadBEfloat fstream = (
    fpt=readfloat fstream
    itger = bit.floatAsInt fpt
    hih = bit.intashex itger
    while hih.count < 8 do hih = "0" + hih
    shn = (substring hih 7 2) + \
    (substring hih 5 2) + \
    (substring hih 3 2) + \
    (substring hih 1 2)
    bit.intAsFloat (bit.hexasint shn)
    )
    -- fn floatSwap2 f = (
    -- i = bit.floatAsInt f
    -- h = bit.intashex i
    -- while h.count < 8 do h = "0" + h
    -- s = (substring h 7 2) + (substring h 5 2) + (substring h 3 2) + (substring h 1 2)
    -- bit.intAsFloat (bit.hexasint s)
    -- )
    fn WriteBEFloat fnum = (
    intgr = bit.floatAsInt fnum
    honey = bit.intashex intgr
    while honey.count < 8
    do honey = "0" + honey
    sign = (substring honey 7 2) + \
    (substring honey 5 2) + \
    (substring honey 3 2) + \
    (substring honey 1 2)
    xintgr=bit.intAsFloat (bit.hexasint sign)
    return xintgr
    )

    rollout DDV "Vertex Modding Patcher" width:311 height:257
    (
    button btn1 "Import Verts" pos:[8,12] width:144 height:40
    button btn3 "Create Patch" pos:[8,108] width:144 height:40
    button btn4 "Patch Model" pos:[8,156] width:144 height:40
    label lbl0 "-Mario_Kart64n, (June22, 2010)" pos:[153,238] width:156 height:23
    button btn5 "Fix AiS Import" pos:[8,204] width:144 height:40
    checkbox chk6 "Checkbox" pos:[165,202] width:14 height:13
    label lbl6 "Scale AIS Import" pos:[182,201] width:111 height:15
    button btn2 "Export Verts" pos:[8,60] width:144 height:40
    checkbox chk1 "Checkbox" pos:[165,55] width:14 height:13 enabled:false checked:false
    label lbl1 "Save as 3DS File" pos:[182,54] width:119 height:15 enabled:false
    checkbox chk2 "Checkbox" pos:[165,72] width:14 height:13 enabled:false checked:false
    label lbl2 "Save As Seperate Files" pos:[182,71] width:119 height:15 enabled:false
    checkbox chk3 "Checkbox" pos:[165,90] width:14 height:13 enabled:true checked:true
    label lbl3 "Save Changes to MDL0" pos:[180,89] width:119 height:15
    checkbox chk4 "Checkbox" pos:[165,108] width:14 height:13 enabled:true checked:true
    label lbl4 "Read Offset from File" pos:[180,107] width:119 height:15
    groupBox grp3 "Other Options" pos:[157,185] width:143 height:51
    editText edt1 " MDL0 Offset:" pos:[162,125] width:130 height:16
    checkbox chk7 "Checkbox" pos:[165,218] width:14 height:13 enabled:false checked:false
    label lbl7 "Rotate AIS Import" pos:[181,217] width:111 height:15 enabled:false
    label lbl5 "Don't Use EditPoly" pos:[181,164] width:119 height:15 enabled:false
    groupBox grp2 "Import Options" pos:[157,148] width:143 height:37
    groupBox grp1 "Export Options" pos:[157,7] width:143 height:140
    checkbox chk5 "Checkbox" pos:[165,165] width:14 height:13 enabled:false checked:false
    radioButtons rdo1 "" pos:[165,21] width:125 height:32 labels:#("Vertices", "Texture Corrdinates") default:1 columns:1

    local typedOffset=""

    on edt1 entered txt do(
    if txt != "" do(
    typedOffset=txt as float
    if typedOffset<=0 do(
    typedOffset=typedOffset*-1
    )
    local typedOffset
    )
    )

    on btn1 pressed do(
    fsource = GetOpenFileName \
    caption:"Brawl Vert Import" types: \
    "All files (*.*)|*.*|"
    f= fopen fsource "rb"
    fpath= getFilenamePath fsource
    fname = getFilenameFile fsource

    vertArray=#()
    uvwArray=#()
    faceArray=#()

    fSize=readBElong f
    mdlOffset=readBElong f
    dataOffset=readBElong f
    strOffset=readBElong f
    vertID=readBElong f
    vUkn1=readBElong f --flag? is XYZ?
    dataType=readBElong f
    entryStride=readBEshort f
    numVertices=readBEshort f
    eMinX=readBEfloat f
    eMinY=readBEfloat f
    eMinZ=readBEfloat f
    eMaxX=readBEfloat f
    eMaxY=readBEfloat f
    eMaxZ=readBEfloat f
    pad=readBElong f
    pad=readBElong f


    if entryStride==12 then(
    for x = 1 to numVertices do(
    vX=readBEfloat f
    vY=readBEfloat f
    vZ=readBEfloat f
    append vertArray[vX,vY,vZ]
    append uvwArray[0,0,0]
    )
    )
    else(
    for x = 1 to numVertices do(
    vX=readBEfloat f
    vY=readBEfloat f
    vZ=0
    append vertArray[vX,vY,vZ]
    append uvwArray[0,0,0]
    )
    )


    msh = mesh vertices:vertArray faces:faceArray   --build mesh
    msh.numTVerts = vertArray.count
    msh.name=fname
    buildTVfaces msh
    select msh

     messageBox "Done !"
     
     
    gc()
    fclose f
    )

    on btn2 pressed do(
    doVerts=chk5.checked
    doUVs=rdo1.state
    do3DS=chk1.checked
    doDUMP=chk2.checked
    doMDL=chk3.checked
    doOffset=chk4.checked
    if doUVs==1 do(
    obj=getCurrentSelection()
    obj.pos = [0,0,0]
    obj.rotation = quat 0 0 0 0
    local mdlSize=""
    local mdlOffset=""
    local numEntrtices=""
    --
    if doOffset==true then(
    fsource = GetOpenFileName \
    caption:"Select UVSet to Replace" types: \
    "All files (*.*)|*.*|"
    f=fopen fsource "rb"
    mdlSize=readBElong f-64
    mdlOffset=(readBElong f*-1)+64
    dataOffset=readBElong f
    strOffset=readBElong f
    vertID=readBElong f
    vUkn1=readBElong f --flag? is XYZ?
    dataType=readBElong f
    entryStride=readBEshort f
    numEntrtices=readBEshort f
    fclose f

    )
    else(

    for g = 1 to obj.count do(
    tmesh = snapshotAsMesh obj[g]
    num_verts = tmesh.numverts
    num_uvws = tmesh.numtverts
    num_faces = tmesh.numfaces

    mdlSize=(num_verts*12)+64
    mdlOffset= typedOffset+64
    numEntrtices=num_verts

    delete tmesh
    )

    )

    --
    fsource = GetOpenFileName \
    caption:"Select the MDL0 to inject to" types: \
    "MDL0(*mdl0)|*.mdl0|All files (*.*)|*.*|"

    fext= getFilenameType fsource
    fsize= getFileSize fsource
    fpath= getFilenamePath fsource
    fname= getFilenameFile fsource
    fclose f

    --
    deleteFile (fpath+fname+"_backup"+fext)
    copyFile fsource (fpath+fname+"_backup"+fext)
    f=fopen (fpath+fname+"_backup"+fext) "rb"
    s = fopen fsource "wb"

    print "ffff"
    print mdlOffset
    for wr = 1 to mdlOffset do(
    read=readbyte f
    write=writebyte s read
    )

    fseek f -34 #seek_cur
    lenCheck=readBEshort f
    fseek f 32 #seek_cur


    if numEntrtices==lenCheck then(



    for g = 1 to obj.count do(
    tmesh = snapshotAsMesh obj[g]
    num_verts = tmesh.numverts
    num_uvws = tmesh.numtverts
    num_faces = tmesh.numfaces

    padding=((mdlSize/8)-numEntrtices)



    for t = 1 to numEntrtices do(
    tv=getVert tmesh t
    nSwap=writeBEfloat tv[1]
    write=writelong s (bit.floatasint nSwap)
    nSwap=writeBEfloat tv[2]
    write=writelong s (bit.floatasint nSwap)
    nSwap=writeBEfloat tv[3]
    write=writelong s (bit.floatasint nSwap)
    )



    -- for p = 1 to padding do(
    -- write=writelong s 0
    -- write=writelong s 0
    -- )

    delete tmesh
    )

    fseek f (mdlOffset+(numEntrtices*12)) #seek_set
    for wr = 1 to (fsize-(mdlOffset+(numEntrtices*12))) do(
    read=readbyte f #unsigned
    write=writebyte s read
    )
    messageBox "DONE!"
    )
    else(
    gc()
    fclose f
    fclose s
    deleteFile (fpath+fname+fext)
    renameFile (fpath+fname+"_backup"+fext) (fpath+fname+fext)
    messageBox "ERROR! Wrong Offset?"
    )



    )
    if doUVs==2 do(
    obj=getCurrentSelection()
    obj.pos = [0,0,0]
    obj.rotation = quat 0 0 0 0

    --
    if doOffset==true then(
    fsource = GetOpenFileName \
    caption:"Select UVSet to Replace" types: \
    "All files (*.*)|*.*|"
    f=fopen fsource "rb"
    mdlSize=readBElong f-64
    mdlOffset=(readBElong f*-1)+64
    dataOffset=readBElong f
    strOffset=readBElong f
    vertID=readBElong f
    vUkn1=readBElong f --flag? is XYZ?
    dataType=readBElong f
    entryStride=readBEshort f
    numEntrtices=readBEshort f
    fclose f

    )
    else(

    for g = 1 to obj.count do(
    tmesh = snapshotAsMesh obj[g]
    num_verts = tmesh.numverts
    num_uvws = tmesh.numtverts
    num_faces = tmesh.numfaces

    padding=((mdlSize/8)-numEntrtices)


    mdlSize=num_verts*8
    mdlOffset= typedOffset+64
    numEntrtices=num_verts

    delete tmesh
    )

    )

    --
    fsource = GetOpenFileName \
    caption:"Select the MDL0 to inject to" types: \
    "MDL0(*mdl0)|*.mdl0|All files (*.*)|*.*|"

    fext= getFilenameType fsource
    fsize= getFileSize fsource
    fpath= getFilenamePath fsource
    fname= getFilenameFile fsource
    fclose f

    --
    deleteFile (fpath+fname+"_backup"+fext)
    copyFile fsource (fpath+fname+"_backup"+fext)
    f=fopen (fpath+fname+"_backup"+fext) "rb"
    s = fopen fsource "wb"

    print "ffff"
    print mdlOffset
    for wr = 1 to mdlOffset do(
    read=readbyte f
    write=writebyte s read
    )


    for g = 1 to obj.count do(
    tmesh = snapshotAsMesh obj[g]
    num_verts = tmesh.numverts
    num_uvws = tmesh.numtverts
    num_faces = tmesh.numfaces

    padding=((mdlSize/8)-numEntrtices)


    if num_uvws!=0 then(
    for t = 1 to numEntrtices do(
    tv=getTVert tmesh t
    nSwap=writeBEfloat tv[1]
    write=writelong s (bit.floatasint nSwap)
    nSwap=writeBEfloat tv[2]
    write=writelong s (bit.floatasint nSwap)
    )
    )
    else(
    for t = 1 to numEntrtices do(
    tv=getVert tmesh t
    nSwap=writeBEfloat tv[1]
    write=writelong s (bit.floatasint nSwap)
    nSwap=writeBEfloat tv[2]
    write=writelong s (bit.floatasint nSwap)
    )
    )



    -- for p = 1 to padding do(
    -- write=writelong s 0
    -- write=writelong s 0
    -- )

    delete tmesh
    )

    fseek f (mdlOffset+(numEntrtices*8)) #seek_set
    for wr = 1 to (fsize-(mdlOffset+(numEntrtices*8))) do(
    read=readbyte f #unsigned
    write=writebyte s read
    )


    )
    gc()
    fclose f
    fclose s
    )


    on btn3 pressed do(
    fsource = GetOpenFileName \
    caption:"Brawl Vert Import" types: \
    "All files (*.*)|*.*|"
    f= fopen fsource "rb"
    fpath= getFilenamePath fsource
    fname = getFilenameFile fsource

    vertArray=#()
    uvwArray=#()
    faceArray=#()

    fSize=readBElong f
    mdlOffset=readBElong f
    dataOffset=readBElong f
    strOffset=readBElong f
    vertID=readBElong f
    vUkn1=readBElong f --flag? is XYZ?
    dataType=readBElong f
    entryStride=readBEshort f
    numVertices=readBEshort f
    eMinX=readBEfloat f
    eMinY=readBEfloat f
    eMinZ=readBEfloat f
    eMaxX=readBEfloat f
    eMaxY=readBEfloat f
    eMaxZ=readBEfloat f
    pad=readBElong f
    pad=readBElong f

    for x = 1 to numVertices do(
    vX=readBEfloat f
    vY=readBEfloat f
    vZ=readBEfloat f
    append vertArray[vX,vY,vZ]
    append uvwArray[0,0,0]
    )

    obj=getCurrentSelection()
    obj.pos = [0,0,0]
    obj.rotation = quat 0 0 0 0
    max modify mode
    addModifier obj (edit_poly())
    subobjectLevel = 1
    -- modPanel.setCurrentObject obj.modifiers[#Edit_Poly]
    diffArray=#()
    directionArray=#()
    for x = 1 to numVertices do(
    $.modifiers[#Edit_Poly].SetSelection #Vertex #{}
    $.modifiers[#Edit_Poly].Select #Vertex #{x}
    vert=$.modifiers[#Edit_Poly].GetVertex x
    -- $.modifiers[#Edit_Poly].SetOperation #Transform


    mX=(vertArray[x][1])-(vert[1])
    mY=(vertArray[x][2])-(vert[2])
    mZ=(vertArray[x][3])-(vert[3])



    append diffArray[mX,mY,mZ]

    )

    deleteModifier obj 1

    createFile (fpath+fname+"_patch.pta")
    s = fopen (fpath+fname+"_patch.pta") "ab"
    vcount=writelong s numVertices
     for x = 1 to numVertices do(
    write=writefloat s (diffArray[x][1])
    write=writefloat s (diffArray[x][2])
    write=writefloat s (diffArray[x][3])
    write=writelong s 0x0
     )
     
     messageBox ("Patch Created !"  +"\n"+
    "\n"+
    "File Saved To:"  +"\n"+
    (fpath+fname+"_patch.pta")
    )

    gc()
    fclose s
    fclose f
    )

    on btn4 pressed do(
    fsource = GetOpenFileName \
    caption:"Brawl Vert Patcher" types: \
    "Patch(*pta)|*.pta|All files (*.*)|*.*|"
    f= fopen fsource "rb"
    fpath= getFilenamePath fsource

    vertArray=#()
    vcount=readlong f #unsigned
    for x = 1 to vcount do(
    vX=readfloat f
    vY=readfloat f
    vZ=readfloat f
    dmy=readshort f #unsigned
    side=readshort f #unsigned
    append vertArray[vX,vY,vZ,side]
    )

    obj=getCurrentSelection()
    obj.pos = [0,0,0]
    obj.rotation = quat 0 0 0 0
    max modify mode
    addModifier obj (edit_poly())
    subobjectLevel = 1
    --modPanel.setCurrentObject obj.modifiers[#Edit_Poly]
    for x = 1 to vcount do(
    $.modifiers[#Edit_Poly].SetSelection #Vertex #{}
    $.modifiers[#Edit_Poly].Select #Vertex #{x}
    vert=$.modifiers[#Edit_Poly].GetVertex x
    $.modifiers[#Edit_Poly].SetOperation #Transform
    mX=(vertArray[x][1])
    mY=(vertArray[x][2])
    mZ=(vertArray[x][3])
    $.modifiers[#Edit_Poly].MoveSelection  [mX,mY,mZ]
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetSelection #Vertex #{}
    )
    subobjectLevel = 0
    --modPanel.setCurrentObject obj.modifiers[#Edit_Poly]

    messageBox "Patched !"

    gc()
    fclose f
    )



    on btn5 pressed do(

    disableSceneRedraw()
    st = timestamp() --get start time in milliseconds
    undo off(
    geo=$polygon*
    -- print geo
    for x = 1 to geo.count do(
    addModifier geo[x] (Normalmodifier ())
    geo[x].modifiers[#Normal].flip = on
    addModifier geo[x] (smooth ())
    geo[x].modifiers[#Smooth].smoothingBits = 1
    collapseStack geo[x]
    m2010=chk6.checked
    if m2010==true do(
    --rotate geo[x] (quat -1 0 0 0)
    geo[x].scale = [2.54,2.54,2.54]
    )
    )
    delete $helpers
    for x = 1 to geo.count do(
    -- aBox = Box length:0.2 width:0.2 height:0.2 name:"dummy"
    aBox = Box()
    aBox.rotation = quat 0.707107 0 0 0.707107
    convertTo aBox TriMeshGeometry
    )
    dmy=$Box*
    myBoxes=#()
    myMeshes=#()
    for x = 1 to geo.count do(
    objA= dmy[x]
    objB= geo[x]
    append myBoxes objA
    append myMeshes objB
    )

    for x = 1 to geo.count do(
    myBoxes[x].name = myMeshes[x].name
    attach myBoxes[x] myMeshes[x]
    )

    for x = 1 to geo.count do(
    for i = 1 to 8 do(
    delete geo[x].verts[#{1}]
    )
    addModifier geo[x] (Morpher ())
    )

    addModifier $Polygon* (Edit_Mesh ())

    )
    et = timestamp() --get end time in milliseconds
    enableSceneRedraw()
    gc()
    print ("Operation Completed In: "+(((et-st)/60)as string)+" Seconds") --print time to finish
    )
    )

    createDialog DDV

    At the top of 3DS max, you'll find that it says MAXScript. Press new script and a box will open up. Copy mariokart's script and paste it in there. Then save it as whatever you like. (I saved it as "vertex"). Now you'll have to run the script and you'll see that a box that says "Vertex Modding Patcher" will open up.



    Import the .dae in 3DS max. To do this, you'll need COLLADA which you can download here: http://sourceforge.net/projects/colladamaya/files/COLLADAMax%201.4.1%20plug-ins/ColladaMax_FREE_3.05C.exe/ColladaMax_FREE_3.05C.exe/download



    You'll find that the model looks a bit messed up.



    However, this can be fixed easily. Make sure that "Scale AIS Import" is selected in the Vertex Modding Patcher and press "Fix AiS Import". Scale AIS Import will correct the size of the model so you don't need to make over exaggerated changes for something to look correct in Brawlbox.



    There, the model looks normal now.

    Now what you do, is choose the polygon that you want to edit. Since I'm editing Ness' face, I'll right click on his face and press "Hide unselected".



    Creepy, eh? XD

    Now in the Vertex Modding Patcher, click "Import Verts". Select the vertex set which you previously exported from Brawlbox.



    The vertex group is now opened up. They won't show up unless you click the button (the one with the three red dots), but you don't need them to show up anyways.



    Now that that's done, on the right you should see something that says "Modifier List". Below that is something that says:

    + Edit Mesh
       Morpher
    + Editable Mesh

    Click Morpher. Below, you should see buttons that say "-empty-" and "0.0" beside them.



    Right click on the first "-empty-" and press "Pick from scene". Then press "H" on your keyboard.



    This box should show up. Select your vertex set, and then press Pick.



    There, now leave that as it is. (We'll come back to it later) Above that, click "+ Edit Mesh" and now you can start editing as you wish like you normally would.



    Now that we're done with the editing...



    Go back to "Morpher" and raise the "0.0" up to 100.



    As you can see, the model looks messed up now. Don't worry though, that's normal.

    Next, you have to lay the model on it's back. You can either do the hard way or the easy way. The hard way being rotating the model by yourself and making sure the angles at the bottom (X, Y and Z) say 0, or by doing the easy way which is:

    Press "B" and then "P" on your keyboard. It changes the view of the window. "B" lays it on it's back, and "P" puts it back into your perspective view.



    Now click on your model and on the right side, right click on +Edit Mesh and press Collapse All.



    A warning will pop up, but just press "Yes".

    Now press "H" on your keyboard and select the vertex set.



    Go to Modifier List and then select Morpher. Right click the -empty- like before, but this time click the polygon/model and raise the 0.0 up to 100.



    In Brawlbox, export the model (FitNess00 in my case) and check the MDL0 Offset of your vertex set.



    Now go back to the Vertex Modding Patcher box and write down the MDL0 Offset in the box. Make sure that Read Offset from file is unchecked or you'll get an error. (in the pic it's not unchecked though, but don't mind that).



    Then press Export Verts and choose your model that you exported.



    Replace the model in brawlbox, and success! Now you can go edit other parts to make the model look even better.


    « Last Edit: July 03, 2010, 01:39:59 PM by Vishkugeta » Logged

    Yoshiboshi3
    Extreme Kitten
    *******
    Offline Offline

    Posts: 391


    Hey guys im yoshiboshi3 i maik vertex hacks

  • Awards Hot Topic Tutorial Writer

  • View Profile Awards
    « Reply #207 on: July 03, 2010, 01:57:07 PM »


    When I export the vertices to the model, I get "ERROR! Wrong Offset!" D:

    I put the MDL0 Offset from the vertex set.

    EDIT: Never mind. It worked when I unchecked read offset from file.

    Also, mariokart do you mind putting this in the first post?

    I made a text tutorial of how to do this since people in the KCMM family thread (in the off-topic board) wanted a detailed one so they can go at their own pace instead of the vid.

    I know Yoshiboshi made one, but his is sort of outdated.

    How to do the new vertex method without DasDonkey Vertex Box
    (+ Without Patching)

    In this tutorial I'm going to be making Ness' head bigger. You can do whatever you want, but this is just an example. Mariokart's new script makes it so DasDonkey Vertex box isn't needed anymore, and the only tutorials that mariokart has up are videos, so this is for people who want to take things at their own pace. The reason why it's good to not use DasDonkey Vertex Box anymore, is that vertex sets that previously didn't work (Peach's crown, Pokemon Trainer's hat/hair, etc) should work now.

    First, export the .brres of the first model data.



    You'll need to download AiS which converts the .brres into a .dae, so you can open it in 3DS max. For this to work, make sure that the .brres contains a model which is unedited. If it is edited, then AiS will not work and will simply make a log file. You can download AiS here: http://cid-c59ea3c98a300f31.skydrive.live.com/self.aspx/.Public/Programs/ais0.1.3.zip

    Next, export the vertex group that you want to edit in Brawlbox.



    Now open 3DS Max 8 (and note that this only works in Max 8 not 9, 2008, 2009 or 2010), and run mariokart64n's script:

    Code:
    fn readBEshort fstream = (
    short = readshort fstream #unsigned
    short = bit.swapBytes short 1 2
    return short
    )
    fn readBElong fstream = (
    long = readlong fstream
    long = bit.swapBytes long 1 4
    long = bit.swapBytes long 2 3
    return long
    )
    fn ReadBEfloat fstream = (
    fpt=readfloat fstream
    itger = bit.floatAsInt fpt
    hih = bit.intashex itger
    while hih.count < 8 do hih = "0" + hih
    shn = (substring hih 7 2) + \
    (substring hih 5 2) + \
    (substring hih 3 2) + \
    (substring hih 1 2)
    bit.intAsFloat (bit.hexasint shn)
    )
    -- fn floatSwap2 f = (
    -- i = bit.floatAsInt f
    -- h = bit.intashex i
    -- while h.count < 8 do h = "0" + h
    -- s = (substring h 7 2) + (substring h 5 2) + (substring h 3 2) + (substring h 1 2)
    -- bit.intAsFloat (bit.hexasint s)
    -- )
    fn WriteBEFloat fnum = (
    intgr = bit.floatAsInt fnum
    honey = bit.intashex intgr
    while honey.count < 8
    do honey = "0" + honey
    sign = (substring honey 7 2) + \
    (substring honey 5 2) + \
    (substring honey 3 2) + \
    (substring honey 1 2)
    xintgr=bit.intAsFloat (bit.hexasint sign)
    return xintgr
    )

    rollout DDV "Vertex Modding Patcher" width:311 height:257
    (
    button btn1 "Import Verts" pos:[8,12] width:144 height:40
    button btn3 "Create Patch" pos:[8,108] width:144 height:40
    button btn4 "Patch Model" pos:[8,156] width:144 height:40
    label lbl0 "-Mario_Kart64n, (June22, 2010)" pos:[153,238] width:156 height:23
    button btn5 "Fix AiS Import" pos:[8,204] width:144 height:40
    checkbox chk6 "Checkbox" pos:[165,202] width:14 height:13
    label lbl6 "Scale AIS Import" pos:[182,201] width:111 height:15
    button btn2 "Export Verts" pos:[8,60] width:144 height:40
    checkbox chk1 "Checkbox" pos:[165,55] width:14 height:13 enabled:false checked:false
    label lbl1 "Save as 3DS File" pos:[182,54] width:119 height:15 enabled:false
    checkbox chk2 "Checkbox" pos:[165,72] width:14 height:13 enabled:false checked:false
    label lbl2 "Save As Seperate Files" pos:[182,71] width:119 height:15 enabled:false
    checkbox chk3 "Checkbox" pos:[165,90] width:14 height:13 enabled:true checked:true
    label lbl3 "Save Changes to MDL0" pos:[180,89] width:119 height:15
    checkbox chk4 "Checkbox" pos:[165,108] width:14 height:13 enabled:true checked:true
    label lbl4 "Read Offset from File" pos:[180,107] width:119 height:15
    groupBox grp3 "Other Options" pos:[157,185] width:143 height:51
    editText edt1 " MDL0 Offset:" pos:[162,125] width:130 height:16
    checkbox chk7 "Checkbox" pos:[165,218] width:14 height:13 enabled:false checked:false
    label lbl7 "Rotate AIS Import" pos:[181,217] width:111 height:15 enabled:false
    label lbl5 "Don't Use EditPoly" pos:[181,164] width:119 height:15 enabled:false
    groupBox grp2 "Import Options" pos:[157,148] width:143 height:37
    groupBox grp1 "Export Options" pos:[157,7] width:143 height:140
    checkbox chk5 "Checkbox" pos:[165,165] width:14 height:13 enabled:false checked:false
    radioButtons rdo1 "" pos:[165,21] width:125 height:32 labels:#("Vertices", "Texture Corrdinates") default:1 columns:1

    local typedOffset=""

    on edt1 entered txt do(
    if txt != "" do(
    typedOffset=txt as float
    if typedOffset<=0 do(
    typedOffset=typedOffset*-1
    )
    local typedOffset
    )
    )

    on btn1 pressed do(
    fsource = GetOpenFileName \
    caption:"Brawl Vert Import" types: \
    "All files (*.*)|*.*|"
    f= fopen fsource "rb"
    fpath= getFilenamePath fsource
    fname = getFilenameFile fsource

    vertArray=#()
    uvwArray=#()
    faceArray=#()

    fSize=readBElong f
    mdlOffset=readBElong f
    dataOffset=readBElong f
    strOffset=readBElong f
    vertID=readBElong f
    vUkn1=readBElong f --flag? is XYZ?
    dataType=readBElong f
    entryStride=readBEshort f
    numVertices=readBEshort f
    eMinX=readBEfloat f
    eMinY=readBEfloat f
    eMinZ=readBEfloat f
    eMaxX=readBEfloat f
    eMaxY=readBEfloat f
    eMaxZ=readBEfloat f
    pad=readBElong f
    pad=readBElong f


    if entryStride==12 then(
    for x = 1 to numVertices do(
    vX=readBEfloat f
    vY=readBEfloat f
    vZ=readBEfloat f
    append vertArray[vX,vY,vZ]
    append uvwArray[0,0,0]
    )
    )
    else(
    for x = 1 to numVertices do(
    vX=readBEfloat f
    vY=readBEfloat f
    vZ=0
    append vertArray[vX,vY,vZ]
    append uvwArray[0,0,0]
    )
    )


    msh = mesh vertices:vertArray faces:faceArray   --build mesh
    msh.numTVerts = vertArray.count
    msh.name=fname
    buildTVfaces msh
    select msh

     messageBox "Done !"
     
     
    gc()
    fclose f
    )

    on btn2 pressed do(
    doVerts=chk5.checked
    doUVs=rdo1.state
    do3DS=chk1.checked
    doDUMP=chk2.checked
    doMDL=chk3.checked
    doOffset=chk4.checked
    if doUVs==1 do(
    obj=getCurrentSelection()
    obj.pos = [0,0,0]
    obj.rotation = quat 0 0 0 0
    local mdlSize=""
    local mdlOffset=""
    local numEntrtices=""
    --
    if doOffset==true then(
    fsource = GetOpenFileName \
    caption:"Select UVSet to Replace" types: \
    "All files (*.*)|*.*|"
    f=fopen fsource "rb"
    mdlSize=readBElong f-64
    mdlOffset=(readBElong f*-1)+64
    dataOffset=readBElong f
    strOffset=readBElong f
    vertID=readBElong f
    vUkn1=readBElong f --flag? is XYZ?
    dataType=readBElong f
    entryStride=readBEshort f
    numEntrtices=readBEshort f
    fclose f

    )
    else(

    for g = 1 to obj.count do(
    tmesh = snapshotAsMesh obj[g]
    num_verts = tmesh.numverts
    num_uvws = tmesh.numtverts
    num_faces = tmesh.numfaces

    mdlSize=(num_verts*12)+64
    mdlOffset= typedOffset+64
    numEntrtices=num_verts

    delete tmesh
    )

    )

    --
    fsource = GetOpenFileName \
    caption:"Select the MDL0 to inject to" types: \
    "MDL0(*mdl0)|*.mdl0|All files (*.*)|*.*|"

    fext= getFilenameType fsource
    fsize= getFileSize fsource
    fpath= getFilenamePath fsource
    fname= getFilenameFile fsource
    fclose f

    --
    deleteFile (fpath+fname+"_backup"+fext)
    copyFile fsource (fpath+fname+"_backup"+fext)
    f=fopen (fpath+fname+"_backup"+fext) "rb"
    s = fopen fsource "wb"

    print "ffff"
    print mdlOffset
    for wr = 1 to mdlOffset do(
    read=readbyte f
    write=writebyte s read
    )

    fseek f -34 #seek_cur
    lenCheck=readBEshort f
    fseek f 32 #seek_cur


    if numEntrtices==lenCheck then(



    for g = 1 to obj.count do(
    tmesh = snapshotAsMesh obj[g]
    num_verts = tmesh.numverts
    num_uvws = tmesh.numtverts
    num_faces = tmesh.numfaces

    padding=((mdlSize/8)-numEntrtices)



    for t = 1 to numEntrtices do(
    tv=getVert tmesh t
    nSwap=writeBEfloat tv[1]
    write=writelong s (bit.floatasint nSwap)
    nSwap=writeBEfloat tv[2]
    write=writelong s (bit.floatasint nSwap)
    nSwap=writeBEfloat tv[3]
    write=writelong s (bit.floatasint nSwap)
    )



    -- for p = 1 to padding do(
    -- write=writelong s 0
    -- write=writelong s 0
    -- )

    delete tmesh
    )

    fseek f (mdlOffset+(numEntrtices*12)) #seek_set
    for wr = 1 to (fsize-(mdlOffset+(numEntrtices*12))) do(
    read=readbyte f #unsigned
    write=writebyte s read
    )
    messageBox "DONE!"
    )
    else(
    gc()
    fclose f
    fclose s
    deleteFile (fpath+fname+fext)
    renameFile (fpath+fname+"_backup"+fext) (fpath+fname+fext)
    messageBox "ERROR! Wrong Offset?"
    )



    )
    if doUVs==2 do(
    obj=getCurrentSelection()
    obj.pos = [0,0,0]
    obj.rotation = quat 0 0 0 0

    --
    if doOffset==true then(
    fsource = GetOpenFileName \
    caption:"Select UVSet to Replace" types: \
    "All files (*.*)|*.*|"
    f=fopen fsource "rb"
    mdlSize=readBElong f-64
    mdlOffset=(readBElong f*-1)+64
    dataOffset=readBElong f
    strOffset=readBElong f
    vertID=readBElong f
    vUkn1=readBElong f --flag? is XYZ?
    dataType=readBElong f
    entryStride=readBEshort f
    numEntrtices=readBEshort f
    fclose f

    )
    else(

    for g = 1 to obj.count do(
    tmesh = snapshotAsMesh obj[g]
    num_verts = tmesh.numverts
    num_uvws = tmesh.numtverts
    num_faces = tmesh.numfaces

    padding=((mdlSize/8)-numEntrtices)


    mdlSize=num_verts*8
    mdlOffset= typedOffset+64
    numEntrtices=num_verts

    delete tmesh
    )

    )

    --
    fsource = GetOpenFileName \
    caption:"Select the MDL0 to inject to" types: \
    "MDL0(*mdl0)|*.mdl0|All files (*.*)|*.*|"

    fext= getFilenameType fsource
    fsize= getFileSize fsource
    fpath= getFilenamePath fsource
    fname= getFilenameFile fsource
    fclose f

    --
    deleteFile (fpath+fname+"_backup"+fext)
    copyFile fsource (fpath+fname+"_backup"+fext)
    f=fopen (fpath+fname+"_backup"+fext) "rb"
    s = fopen fsource "wb"

    print "ffff"
    print mdlOffset
    for wr = 1 to mdlOffset do(
    read=readbyte f
    write=writebyte s read
    )


    for g = 1 to obj.count do(
    tmesh = snapshotAsMesh obj[g]
    num_verts = tmesh.numverts
    num_uvws = tmesh.numtverts
    num_faces = tmesh.numfaces

    padding=((mdlSize/8)-numEntrtices)


    if num_uvws!=0 then(
    for t = 1 to numEntrtices do(
    tv=getTVert tmesh t
    nSwap=writeBEfloat tv[1]
    write=writelong s (bit.floatasint nSwap)
    nSwap=writeBEfloat tv[2]
    write=writelong s (bit.floatasint nSwap)
    )
    )
    else(
    for t = 1 to numEntrtices do(
    tv=getVert tmesh t
    nSwap=writeBEfloat tv[1]
    write=writelong s (bit.floatasint nSwap)
    nSwap=writeBEfloat tv[2]
    write=writelong s (bit.floatasint nSwap)
    )
    )



    -- for p = 1 to padding do(
    -- write=writelong s 0
    -- write=writelong s 0
    -- )

    delete tmesh
    )

    fseek f (mdlOffset+(numEntrtices*8)) #seek_set
    for wr = 1 to (fsize-(mdlOffset+(numEntrtices*8))) do(
    read=readbyte f #unsigned
    write=writebyte s read
    )


    )
    gc()
    fclose f
    fclose s
    )


    on btn3 pressed do(
    fsource = GetOpenFileName \
    caption:"Brawl Vert Import" types: \
    "All files (*.*)|*.*|"
    f= fopen fsource "rb"
    fpath= getFilenamePath fsource
    fname = getFilenameFile fsource

    vertArray=#()
    uvwArray=#()
    faceArray=#()

    fSize=readBElong f
    mdlOffset=readBElong f
    dataOffset=readBElong f
    strOffset=readBElong f
    vertID=readBElong f
    vUkn1=readBElong f --flag? is XYZ?
    dataType=readBElong f
    entryStride=readBEshort f
    numVertices=readBEshort f
    eMinX=readBEfloat f
    eMinY=readBEfloat f
    eMinZ=readBEfloat f
    eMaxX=readBEfloat f
    eMaxY=readBEfloat f
    eMaxZ=readBEfloat f
    pad=readBElong f
    pad=readBElong f

    for x = 1 to numVertices do(
    vX=readBEfloat f
    vY=readBEfloat f
    vZ=readBEfloat f
    append vertArray[vX,vY,vZ]
    append uvwArray[0,0,0]
    )

    obj=getCurrentSelection()
    obj.pos = [0,0,0]
    obj.rotation = quat 0 0 0 0
    max modify mode
    addModifier obj (edit_poly())
    subobjectLevel = 1
    -- modPanel.setCurrentObject obj.modifiers[#Edit_Poly]
    diffArray=#()
    directionArray=#()
    for x = 1 to numVertices do(
    $.modifiers[#Edit_Poly].SetSelection #Vertex #{}
    $.modifiers[#Edit_Poly].Select #Vertex #{x}
    vert=$.modifiers[#Edit_Poly].GetVertex x
    -- $.modifiers[#Edit_Poly].SetOperation #Transform


    mX=(vertArray[x][1])-(vert[1])
    mY=(vertArray[x][2])-(vert[2])
    mZ=(vertArray[x][3])-(vert[3])



    append diffArray[mX,mY,mZ]

    )

    deleteModifier obj 1

    createFile (fpath+fname+"_patch.pta")
    s = fopen (fpath+fname+"_patch.pta") "ab"
    vcount=writelong s numVertices
     for x = 1 to numVertices do(
    write=writefloat s (diffArray[x][1])
    write=writefloat s (diffArray[x][2])
    write=writefloat s (diffArray[x][3])
    write=writelong s 0x0
     )
     
     messageBox ("Patch Created !"  +"\n"+
    "\n"+
    "File Saved To:"  +"\n"+
    (fpath+fname+"_patch.pta")
    )

    gc()
    fclose s
    fclose f
    )

    on btn4 pressed do(
    fsource = GetOpenFileName \
    caption:"Brawl Vert Patcher" types: \
    "Patch(*pta)|*.pta|All files (*.*)|*.*|"
    f= fopen fsource "rb"
    fpath= getFilenamePath fsource

    vertArray=#()
    vcount=readlong f #unsigned
    for x = 1 to vcount do(
    vX=readfloat f
    vY=readfloat f
    vZ=readfloat f
    dmy=readshort f #unsigned
    side=readshort f #unsigned
    append vertArray[vX,vY,vZ,side]
    )

    obj=getCurrentSelection()
    obj.pos = [0,0,0]
    obj.rotation = quat 0 0 0 0
    max modify mode
    addModifier obj (edit_poly())
    subobjectLevel = 1
    --modPanel.setCurrentObject obj.modifiers[#Edit_Poly]
    for x = 1 to vcount do(
    $.modifiers[#Edit_Poly].SetSelection #Vertex #{}
    $.modifiers[#Edit_Poly].Select #Vertex #{x}
    vert=$.modifiers[#Edit_Poly].GetVertex x
    $.modifiers[#Edit_Poly].SetOperation #Transform
    mX=(vertArray[x][1])
    mY=(vertArray[x][2])
    mZ=(vertArray[x][3])
    $.modifiers[#Edit_Poly].MoveSelection  [mX,mY,mZ]
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetSelection #Vertex #{}
    )
    subobjectLevel = 0
    --modPanel.setCurrentObject obj.modifiers[#Edit_Poly]

    messageBox "Patched !"

    gc()
    fclose f
    )



    on btn5 pressed do(

    disableSceneRedraw()
    st = timestamp() --get start time in milliseconds
    undo off(
    geo=$polygon*
    -- print geo
    for x = 1 to geo.count do(
    addModifier geo[x] (Normalmodifier ())
    geo[x].modifiers[#Normal].flip = on
    addModifier geo[x] (smooth ())
    geo[x].modifiers[#Smooth].smoothingBits = 1
    collapseStack geo[x]
    m2010=chk6.checked
    if m2010==true do(
    --rotate geo[x] (quat -1 0 0 0)
    geo[x].scale = [2.54,2.54,2.54]
    )
    )
    delete $helpers
    for x = 1 to geo.count do(
    -- aBox = Box length:0.2 width:0.2 height:0.2 name:"dummy"
    aBox = Box()
    aBox.rotation = quat 0.707107 0 0 0.707107
    convertTo aBox TriMeshGeometry
    )
    dmy=$Box*
    myBoxes=#()
    myMeshes=#()
    for x = 1 to geo.count do(
    objA= dmy[x]
    objB= geo[x]
    append myBoxes objA
    append myMeshes objB
    )

    for x = 1 to geo.count do(
    myBoxes[x].name = myMeshes[x].name
    attach myBoxes[x] myMeshes[x]
    )

    for x = 1 to geo.count do(
    for i = 1 to 8 do(
    delete geo[x].verts[#{1}]
    )
    addModifier geo[x] (Morpher ())
    )

    addModifier $Polygon* (Edit_Mesh ())

    )
    et = timestamp() --get end time in milliseconds
    enableSceneRedraw()
    gc()
    print ("Operation Completed In: "+(((et-st)/60)as string)+" Seconds") --print time to finish
    )
    )

    createDialog DDV

    At the top of 3DS max, you'll find that it says MAXScript. Press new script and a box will open up. Copy mariokart's script and paste it in there. Then save it as whatever you like. (I saved it as "vertex"). Now you'll have to run the script and you'll see that a box that says "Vertex Modding Patcher" will open up.



    Import the .dae in 3DS max. To do this, you'll need COLLADA which you can download here: http://sourceforge.net/projects/colladamaya/files/COLLADAMax%201.4.1%20plug-ins/ColladaMax_FREE_3.05C.exe/ColladaMax_FREE_3.05C.exe/download



    You'll find that the model looks a bit messed up.



    However, this can be fixed easily. Make sure that "Scale AIS Import" is selected in the Vertex Modding Patcher and press "Fix AiS Import". Scale AIS Import will correct the size of the model so you don't need to make over exaggerated changes for something to look correct in Brawlbox.



    There, the model looks normal now.

    Now what you do, is choose the polygon that you want to edit. Since I'm editing Ness' face, I'll right click on his face and press "Hide unselected".



    Creepy, eh? XD

    Now in the Vertex Modding Patcher, click "Import Verts". Select the vertex set which you previously exported from Brawlbox.



    The vertex group is now opened up. They won't show up unless you click the button (the one with the three red dots), but you don't need them to show up anyways.



    Now that that's done, on the right you should see something that says "Modifier List". Below that is something that says:

    + Edit Mesh
       Morpher
    + Editable Mesh

    Click Morpher. Below, you should see buttons that say "-empty-" and "0.0" beside them.



    Right click on the first "-empty-" and press "Pick from scene". Then press "H" on your keyboard.



    This box should show up. Select your vertex set, and then press Pick.



    There, now leave that as it is. (We'll come back to it later) Above that, click "+ Edit Mesh" and now you can start editing as you wish like you normally would.



    Now that we're done with the editing...



    Go back to "Morpher" and raise the "0.0" up to 100.



    As you can see, the model looks messed up now. Don't worry though, that's normal.

    Next, you have to lay the model on it's back. You can either do the hard way or the easy way. The hard way being rotating the model by yourself and making sure the angles at the bottom (X, Y and Z) say 0, or by doing the easy way which is:

    Press "B" and then "P" on your keyboard. It changes the view of the window. "B" lays it on it's back, and "P" puts it back into your perspective view.



    Now click on your model and on the right side, right click on +Edit Mesh and press Collapse All.



    A warning will pop up, but just press "Yes".

    Now press "H" on your keyboard and select the vertex set.



    Go to Modifier List and then select Morpher. Right click the -empty- like before, but this time click the polygon/model and raise the 0.0 up to 100.



    In Brawlbox, export the model (FitNess00 in my case) and check the MDL0 Offset of your vertex set.



    Now go back to the Vertex Modding Patcher box and write down the MDL0 Offset in the box. Make sure that Read Offset from file is unchecked or you'll get an error. (in the pic it's not unchecked though, but don't mind that).



    Then press Export Verts and choose your model that you exported.



    Replace the model in brawlbox, and success! Now you can go edit other parts to make the model look even better.




    Oh teh noes, you missed faceMorpher. Thats pretty big, ya konw.

    Of course, I didn't put it in mine either. I think I (Or you, or someone else) should make a vid tut.
    Logged

    STILL BETTER AT VEXING THAN TEXING

    mariokart64n
    Hacker & 2D/3D Modder
    Supreme Kitten
    ********
    Offline Offline

    Posts: 543


    All Hail To The Mario Baby!

  • Awards Super Saiyan Topic Heart Container Famous Hacker Favorite'd

  • View Profile Awards
    « Reply #208 on: July 03, 2010, 03:09:08 PM »


    thanks Vishkugeta I've added into the first post. good stuff
    Logged

    Luka Megurine by mariokart64n
    [Character-ImportModel-Zelda]

    owned645
    Mega Kitten
    *****
    Offline Offline

    Posts: 111


  • Awards Dedicated Hacker

  • View Profile Awards
    « Reply #209 on: July 03, 2010, 07:10:27 PM »


    Thank you sooooooooooooo much! I can't believe that worked!

    I made a simple list of instructions
    • 1. First, export the .brres of the first model data.
    • 2. Convert the .brres into a .dae using ais.
      (Make sure that the .brres contains a model which is unedited.)
    • 3. Export the vertex group that you want to edit in Brawlbox.
    • 4. Now open 3DS Max 8 (and note that this only works in Max 8 not 9, 2008, 2009 or 2010), and run mariokart64n's script.
    • 5. Import the .dae in 3DS max.
    • 6. Make sure that "Scale AIS Import" is selected in the Vertex Modding Patcher and press "Fix AiS Import".
    • 7. Choose the polygon that you want to edit and press "Hide unselected".
    • 8. Now in the Vertex Modding Patcher, click "Import Verts". Select the vertex set which you previously exported from Brawlbox.
    • 9. Click Morpher after selecting the polygon again. Below, you should see buttons that say "-empty-" and "0.0" beside them.
    • 10. Right click on the first "-empty-" and press "Pick from scene". Then press "H" on your keyboard.
    • 11. Select your vertex set, and then press Pick.
    • 12. Now leave that as it is. (We'll come back to it later) Above that, click "+ Edit Mesh" and now you can start editing as you wish like you normally would.
    • 13. After you're done, go back to "Morpher" and raise the "0.0" up to 100.
    • 14. Press "B" and then "P" on your keyboard.
    • 15. Now click on your model and on the right side, right click on +Edit Mesh and press Collapse All.
    • 16. Now press "H" on your keyboard and select the vertex set.
    • 17. Go to Modifier List and then select Morpher. Right click the -empty- like before, but this time click the polygon/model and raise the 0.0 up to 100.
    • 18. In Brawlbox, export the model (FitNess00 in my case) and check the MDL0 Offset of your vertex set.
    • 19. Now go back to the Vertex Modding Patcher box and write down the MDL0 Offset in the box.
      (Make sure that Read Offset from file is unchecked or you'll get an error.)
    • 20. Then press Export Verts and choose your model that you exported.
    • 21. Replace the model in brawlbox, and success! Now you can go edit other parts to make the model look even better.
    Logged


    Pages:  1 ... 11 12 13 [14] 15 16 17 ... 33
    Print
    Jump to: