Jump to content
Official BF Editor Forums

stefax

Members
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

0 Neutral

About stefax

  • Rank
    Newbie
  1. Autodesk 3ds Max 2009 32-bit + http://www.realitymod.com/forum/f388...port-more.html Problem solved.
  2. I need help guys,im stuck on exporting bf2 vehicle.when i try to export i get this error. PLEASE HELP -- Unknown property: "saveMaterial" in undefined -- this struct holds the main scene dumping functions struct rSceneDump ( fn getFilenameExt = ( return "Objects(Objects.con)|Objects.con|All|*.*|" ), -- rSceneDump.writeMesh f meshObj matInfo coordSpace:(matrix3 1) s:s isNonVis:isNonVis fn writeMesh f obj matInfo coordSpace:#world s:0.1 isNonVis:false bnObjs:#() dontWarnSkinWeights:false minUvSetCnt:0= ( RMesh.export obj fHandle:f isLocal:true matInfo:matInfo coordSpace:coordSpace s:s isNonVis:isNonVis bnObjs:bnObjs dontWarnSkinWeights:dontWarnSkinWeights minUvSetCnt:minUvSetCnt ), fn writeTransform f t s:0.1= ( writeFloat f t.row1.x writeFloat f t.row1.z writeFloat f t.row1.y writeFloat f t.row3.x writeFloat f t.row3.z writeFloat f t.row3.y writeFloat f t.row2.x writeFloat f t.row2.z writeFloat f t.row2.y -- Position writeFloat f (t.row4.x*s) writeFloat f (t.row4.z*s) writeFloat f (t.row4.y*s) ), fn saveAnimation f obj objParent range:#(0,0) s:0.1= ( writeLong f (range[2] - range[1] + 1) if objParent != undefined then ( for i=range[1] to range[2] do ( local t at time i ( local t1 = copy obj.transform local t2 = copy objParent.transform t = t1 * inverse t2 ) local bonePos = [t.row4.x, t.row4.z, t.row4.y] * s t.row4 = [0,0,0] local r = (bf2TransformConvert t).rotation writeFloat f r.x writeFloat f r.y writeFloat f r.z writeFloat f r.w writeFloat f bonePos[1] writeFloat f bonePos[2] writeFloat f bonePos[3] ) ) else ( for i=range[1] to range[2] do ( local t at time i ( t = copy obj.transform ) local bonePos = [t.row4.x, t.row4.z, t.row4.y] * s t.row4 = [0,0,0] local r = (bf2TransformConvert t).rotation writeFloat f r.x writeFloat f r.y writeFloat f r.z writeFloat f r.w writeFloat f bonePos[1] writeFloat f bonePos[2] writeFloat f bonePos[3] ) ) ), fn getRootNode objs = ( for i=1 to objs.count do ( if objs[i].parent == undefined then ( if objs[i].name.count > 5 then ( local testName = lowercase objs[i].name if "root_" == (substring testName 1 5) then ( return objs[i] ) ) ) ) return undefined ), fn getRootNodeType rootObjNode = ( local objectTypeName = undefined if isValidNode rootObjNode then ( local testName = lowercase rootObjNode.name objectTypeName = substring testName 6 -1 -- "root_staticmesh_MyName" local foundID = findstring objectTypeName "_" if foundID != undefined then ( objectTypeName = substring objectTypeName 1 (foundID-1) ) ) return objectTypeName ), fn save fname:undefined objs:undefined dbg:true anmRange:undefined anmObjs:undefined s:0.1 prefix:undefined= ( format "save()\n" if objs == undefined then objs = objects as array if objs.count == 0 then ( format "ERROR! No objects to export!\n" return false ) local scalesAreUniform = BF2checkScales objs format " scalesAreUniform: %\n" scalesAreUniform format " anmRange: %\n" anmRange format " anmObjs: %\n" anmObjs -- Filename handling if fname == undefined then ( fname = getSaveFileName types:(rSceneDump.getFilenameExt()) ) if fname == undefined then ( return false ) -- make sure it has the .dat file extension local fnameType = getFilenameType fname if lowercase fnameType != ".dat" then ( if fnameType.count > 0 then fname = (substring fname 1 (fname.count - fnameType.count)) + ".dat" else fname = fname + ".dat" ) format " fname: %\n" fname format " objs: %\n" objs -- find the root node type local rootObjNode = rSceneDump.getRootNode objs local objectTypeName = rSceneDump.getRootNodeType rootObjNode if objectTypeName == undefined then ( MessageBox "Undefined root type! should be one of these: bundledMesh, staticMesh, ..." return false ) local isStaticObject = false local isAnimation = false local isSkeleton = false local jointNodeTypes = #() append JointNodeTypes BoneGeometry append jointNodeTypes Pyramid local validType = false if objectTypeName == "staticmesh" then ( isStaticObject = true anmRange = #(currentTime, currentTime) anmObjs = #() jointNodeTypes = #() validType = true ) if objectTypeName == "bundledmesh" or objectTypeName == "meshparticlemesh" then ( anmRange = #(currentTime, currentTime) anmObjs = #() validType = true ) if objectTypeName == "skeleton" or objectTypeName == "skinnedmesh" then ( isSkeleton = true anmRange = #(currentTime, currentTime) anmObjs = #() validType = true ) if objectTypeName == "animation" then ( isAnimation = true --append jointNodeTypes Dummy validType = true ) if not validType then ( local errMesg = "ERROR! Root object name is unknown: \"" + (objectTypeName as string) + "\"\nCheck your spelling." format "%\n" errMesg MessageBox errMesg return false ) local isAnimOrSke = isAnimation or isSkeleton format " jointNodeTypes: %\n" jointNodeTypes -- For use in animations, kit parts and weapon parts ----------------- local rHand local root_bone local is1p = false local is3p = false if isAnimOrSke then ( for o in objs do ( local bnName = lowercase o.name if bnName == "right_ullna" then ( rHand = o is3p = true ) if bnName == "torus" then ( rHand = o is1p = true ) if bnName == "root" then ( root_bone = o ) ) ) -- (1p skeleton) weapon parts are mesh1 ... mesh16 -- (3p skeleton) kits take over mesh9 ... mesh16 local numWeapParts = 0 if is3p then ( numWeapParts = 8 ) else ( if is1p then numWeapParts = 16 ) ----------------- -- create the file local f = fopen fname "wb" -- file didn't open, so create the path and try again if (f == undefined) then ( local fnamePath = getFilenamePath fname fnamePath = replaceChar fnamePath "/" "\\" local b = makeDir fnamePath f = fopen fname "wb" ) if (f != undefined) then ( local rootNodeTransform = rootObjNode.transform -- Prefixes object names to make them unique for the global game scope local objsPrefix = #() if not isAnimOrSke and classof prefix == String then ( if isValidNode rootObjNode then ( bf2getNodesforPrefix rootObjNode objsPrefix bf2AddNamePrefix objsPrefix prefix ) ) ------------- -- SORTING object order -- local objsNew = BF2SortSkeParts objs objectTypeName is1p is3p --fclose f --return --objs = objsNew if not isAnimOrSke then objs = objsNew if isAnimation then ( format " isAnimation : %\n" isAnimation -- objs = objsNew ) local oldRootName = rootObjNode.name rootObjNode.name = "root_" + objectTypeName -- CALCULATE MESH INFO local meshCount = 0 local validMeshIDs = #() local objUsesMesh = #() objUsesMesh[objs.count] = undefined for i=1 to objs.count do ( local curObj = objs[i] if SuperClassof curObj == GeometryClass then ( if not (isOneOfThese curObj JointNodeTypes) then ( local meshObjId = i objUsesMesh[i] = meshObjId if 0 == (findItem validMeshIDs meshObjId) then append validMeshIDs meshObjId ) ) ) format " validMeshIDs: %\n" validMeshIDs -- EXPORT MESH DATA writeLong f validMeshIDs.count local matFname = (getFilenamePath fname) + (getFilenameFile fname) + ".material" deleteFile matFname local fMat = fopen matFname "w" if fmat != undefined then ( fclose fMat ) else ( format "WARNING! Unable to create file: %\n" matFname ) for i=1 to validMeshIDs.count do ( local meshObj = objs[validMeshIDs[i]] local matInfo = BF2MatInfo.getMulti meshObj.material type:objectTypeName local meshObj_OriginalTransform = meshObj.transform local isNonVis = false if isValidNode meshObj.parent then ( if (lowercase meshObj.parent.name == "nonvis_") then isNonVis = true; ) local crdSpace = matrix3 1 if isStaticObject then ( crdSpace = meshObj.transform * (inverse rootObjNode.transform) ) else ( local p = meshObj.parent if isValidNode p then ( if lowercase p.name == "nonvis_" then ( if isValidNode p.parent then ( -- A collision mesh's pivot is the visible mesh that it is parented to crdSpace = meshObj.transform * (inverse p.parent.transform) ) ) -- scale the mesh crdSpace = crdSpace * scaleMatrix meshObj.scale ) ) local dontWarnSkinWeights = false local bnObjs = #() -- TODO: Get the skeleton bones in the correct order as they will be in the export if objectTypeName == "skinnedmesh" then ( format "SkinnedMesh ... Getting skeleton bones for mesh: %\n" meshObj.name bnObjs = bf2GetSkinMeshBones meshObj objs jointNodeTypes ) if objectTypeName == "bundledmesh" then ( dontWarnSkinWeights = true for o in objs do ( if findItem jointNodeTypes (classof o) > 0 then append bnObjs o ) ) local minUvSetCnt = 0 if isStaticObject and not isNonVis then ( minUvSetCnt = 4 ) rSceneDump.writeMesh f meshObj matInfo coordSpace:crdSpace s:s isNonVis:isNonVis bnObjs:bnObjs dontWarnSkinWeights:dontWarnSkinWeights minUvSetCnt:minUvSetCnt meshObj.transform = meshObj_OriginalTransform local a = "" for i=1 to matInfo.count do ( local fxMat = matInfo[i] if fxMat.fxFilename == undefined then ( format "WARNING: % has undefined .fxFilename\n" meshObj.name --format " % \n" fxMat --format " % \n" meshObj.material ) local b = fxMat.materialID as string b = b + ";" + (fxMat.materialName as string) b = b + ";" + (fxMat.fxFilename as string) b = b + ";" + (fxMat.technique as string) + ";" for j=1 to fxMat.textures.count do ( local tmpTexture = fxMat.textures[j] if tmpTexture.count == 0 then tmpTexture = "default.dds" b = b + "|" + tmpTexture ) a = a + "?" + b ) local saveMatSuccess = bf2mdtOps.saveMaterial matFname ("mesh" + ((i-1) as string)) a if saveMatSuccess != 0 then ( format "WARNING! Unable to save file: %\n" matFname ) ) ------------------------------- -- EXPORT NODE GRAPH DATA -- each node has transform and can have a mesh instance writeLong f objs.count local animatedNodeNames = #() for i=1 to objs.count do ( local curObj = objs[i] -- path Names "Fred|mike|pete" for graphing the scene local pathName = BF2getObjectPath curObj writeLong f (pathName.count + 1) writestring f pathName -- debug info if dbg == true then ( if i < 10 then format " 0%_:%\n" i pathName else format " %_:%\n" i pathName ) -- Node TypeId local typeId = -1 local meshId = objUsesMesh[i] if meshId != undefined then ( meshId = findItem validMeshIDs objUsesMesh[i] if (meshId == 0) then throw "ASSERT! meshID == 0!\n" meshId = meshId - 1 typeId = 0 -- Is mesh ) else ( meshId = -1 if (isOneOfThese curObj JointNodeTypes) then ( typeId = 3; -- joint ) else ( case (classof curObj) of ( Point: typeId = 1 -- locator default: typeID = 2 -- transform ) ) ) local m_flags = 0 local hasAnim = false if classof anmObjs == array then ( local findID = findItem anmObjs curObj if findID != 0 then ( append animatedNodeNames curObj.name m_flags = bit.set m_flags 1 true -- anim_export true hasAnim = true ) ) --format "typeId: % %\n" typeId hasAnim writeLong f typeId writeLong f meshId writelong f m_flags if hasAnim then ( local objParent = curObj.parent -- weapons are relative to right hand local meshID = BF2GetMeshIDFromName curObj.name if classof meshID == integer then ( if meshID <= numWeapParts then ( objParent = objs[1] format " weapon part: % (meshID : %)\n" curObj.name meshID ) ) rSceneDump.saveAnimation f curObj objParent range:anmRange s:s ) else ( if typeId == 3 then -- joint ( rSceneDump.saveAnimation f curObj curObj.parent range:#(currentTime,currentTime) s:s ) else ( local t = undefined if isStaticObject then ( t = matrix3 1 -- the staticobject will snap to this transform if not already this transform ) else ( local p = curObj.parent if isValidNode p then ( if lowercase curObj.name == "nonvis_" then ( t = matrix3 1 ) else ( if lowercase p.name == "nonvis_" then ( if isValidNode p.parent then ( t = matrix3 1 ) ) ) ) ) if t == undefined then ( t = curObj.transform if isValidNode curObj.parent then ( t = curObj.transform * (inverse curObj.parent.transform) t.row4 = t.row4 * curObj.parent.scale ) else ( ) ) -- format " t: %\n" t -- write out relative transform coordinates writelong f 0 rSceneDump.writeTransform f t s:s ) ) ) format " animatedNodeNames: %\n" animatedNodeNames fclose f if objs.count > 0 then objs[1].name = oldRootName -- Removes Prefixes object names to make them unique for the global game scope if not isAnimOrSke and classof prefix == String then ( bf2RemoveNamePrefix objsPrefix prefix ) return fname ) else ( format "Error! Could not create file!\n\t%\n" fname MessageBox ("Error! Could not create file:\n" + (fname as string)) ) return false ) ) And sorry for my bad english.
×