Seems you didn't even get the solution for loading one img file.blackracer wrote:I decided to explore the noesis but I did not get to do one-stop solution for all model files ((
in def noepyCheckType(data):
it's
if bs.readBytes(4).decode,
so (4) not (8)
why do you try to get VCount from address 0x0004?
bs.seek(0x4, NOESEEK_ABS)
VBytes = 36
VCount = bs.readUInt() // VBytes
Your reading the VBuf then IBuf, though IBuf comes first in wheel_rays_te37.img,
your reading short instead of float, you're reading triangles, though you used Strip with hex2obj,
guess you don't know what you're doing with that script, do you?
There's a basic tutorial from chrrox here: viewtopic.php?f=29&t=7760
Here's your modified script that does import the wheel only, counts set manually:
Code: Select all
from inc_noesis import *
import noesis
import rapi
def registerNoesisTypes():
handle = noesis.register("TestScriptGame", ".img")
noesis.setHandlerTypeCheck(handle, noepyCheckType)
noesis.setHandlerLoadModel(handle, noepyLoadModel)
#noesis.logPopup()
return 1
NOEPY_HEADER = "IMGE"
def noepyCheckType(data):
bs = NoeBitStream(data)
if len(data) < 8:
return 0
if bs.readBytes(4).decode("ASCII").rstrip("\0") != NOEPY_HEADER:
return 0
return 1
def noepyLoadModel(data, mdlList):
ctx = rapi.rpgCreateContext()
bs = NoeBitStream(data)
fileName = rapi.getLocalFileName(rapi.getInputName()).rstrip(".img")
rapi.rpgSetName(fileName)
print(fileName)
bs.seek(0xFE3, NOESEEK_ABS)
#FCount = bs.readUInt() // 2
FCount = 513
IBuf = bs.readBytes(FCount * 2)
bs.seek(0x20C0, NOESEEK_ABS)
VBytes = 36
#VCount = bs.readUInt() // VBytes
VCount = 200
VBuf = bs.readBytes(VCount * VBytes)
#skip = bs.readBytes(8)
rapi.rpgBindPositionBufferOfs(VBuf, noesis.RPGEODATA_FLOAT, VBytes, 0)
rapi.rpgBindUV1BufferOfs(VBuf, noesis.RPGEODATA_SHORT, VBytes, 28)
rapi.rpgCommitTriangles(IBuf, noesis.RPGEODATA_USHORT, FCount, noesis.RPGEO_TRIANGLE_STRIP, 1) #SHORT for word indices
mdl = rapi.rpgConstructModel()
mdlList.append(mdl)
rapi.rpgClearBufferBinds()
return 1
Getting textures is the next step. Try to get the models first.Here I made a template, you can help me fix it to read model with names of the textures.