12-10-2019, 08:08 PM
Pages: 1 2
12-25-2019, 12:47 AM
(12-10-2019, 08:08 PM)MovieMaker-X Wrote: [ -> ]How do you even obtain these .msh models, anyway? Because I wanna contribute!
No idea, but I also do want to contribute, sadly some models won't import correctly with TGE's importer, and I have no idea on how to make something similar that'd work with the rest
10-26-2020, 12:41 PM
(12-25-2019, 12:47 AM)Luiluix Wrote: [ -> ](12-10-2019, 08:08 PM)MovieMaker-X Wrote: [ -> ]How do you even obtain these .msh models, anyway? Because I wanna contribute!
No idea, but I also do want to contribute, sadly some models won't import correctly with TGE's importer, and I have no idea on how to make something similar that'd work with the rest
Update: I have got the game files with me now. Is it possible to make an .msh importer for Blender? Just wondering so I can try and contribute! (I have barely any knowledge with Python, so I apologize) Thanks again~
01-30-2024, 09:18 PM
(12-26-2015, 03:43 PM)TGE Wrote: [ -> ]Okay, I guess the script works for those files too
Code:-- 3ds max maxscript
-- My Om Nom .msh importer
-- By TGE, contact me in case there's any issues ;p
gc()
clearlistener()
fn ReadUShort fstream =
(
return (ReadShort fstream #unsigned)
)
fn ReadULong fstream =
(
return (ReadLong fstream #unsigned)
)
fn ReadUByte fstream =
(
return (ReadByte fstream #unsigned)
)
fn ReadVector2 fstream =
(
return [(ReadFloat fstream), ((ReadFloat fstream) * -1)+1, 0]
)
fn ReadVector3 fstream =
(
return [(ReadFloat fstream), (ReadFloat fstream), (ReadFloat fstream)]
)
fn GetOpenFile =
(
clearlistener()
local fname = getOpenFileName \
caption:"Open Model" \
types:"My Om Nom Model (*.msh)|*.msh" \
historyCategory:"MYOMNOM Object Presets"
if (fname == undefined) then
(
return undefined
)
else
(
local f = fopen fname "rb"
return f
)
)
fn ReadArrayInfo fstream =
(
struct ArrayInfoStruct
(
type,
elementCount,
arrayLength
)
local a = ArrayInfoStruct()
a.type = ReadUShort fstream
fseek fstream 0x5 #seek_cur
a.elementCount = ReadULong fstream
a.arrayLength = ReadULong fstream
return a
)
positionArray = #()
texCoordArray = #()
normalArray = #()
faceArray = #()
file = GetOpenFile()
if (file != undefined) then
(
info = ReadArrayInfo file
for i = 1 to info.elementCount do
(
positionArray[i] = ReadVector3 file
)
info = ReadArrayInfo file
for i = 1 to info.elementCount do
(
texCoordArray[i] = ReadVector2 file
)
info = ReadArrayInfo file
for i = 1 to info.elementCount do
(
normalArray[i] = ReadVector3 file
)
info = ReadArrayInfo file
fseek file info.arrayLength #seek_cur
info = ReadArrayInfo file
fseek file info.arrayLength #seek_cur
subMeshCount = ReadUShort file
fseek file 0x01 #seek_cur
for i = 1 to subMeshCount do
(
info = ReadArrayInfo file
for j = 1 to (info.elementCount / 3) do
(
faces = [(ReadUShort file) + 1, (ReadUShort file) + 1, (ReadUShort file) + 1]
append faceArray [faces[3], faces[2], faces[1]]
)
fseek file 0x07 #seek_cur
)
msh = mesh vertices:positionArray faces:faceArray
msh.numTVerts = positionArray.count
buildTVFaces msh
for j = 1 to texCoordArray.count do setTVert msh j texCoordArray[j]
for j = 1 to faceArray.count do setTVFace msh j faceArray[j]
for j = 1 to msh.numfaces do setFaceSmoothGroup msh j 1
max modify mode
select msh
addmodifier msh (Edit_Normals ()) ui:off
msh.Edit_Normals.MakeExplicit selection:#{1..normalArray.count}
EN_convertVS = msh.Edit_Normals.ConvertVertexSelection
EN_setNormal = msh.Edit_Normals.SetNormal
normID = #{}
for v = 1 to normalArray.count do(
free normID
EN_convertVS #{v} &normID
for id in normID do EN_setNormal id normalArray[v]
)
maxOps.CollapseNodeTo msh 1 true -- Collapse the Edit Normals modifier
)
gc()
Can you make a msh converter for blender too please.
There's models from an animation which is considered lost media in the game.
02-03-2024, 10:18 PM
Hey! I used the Apple .ipa version available from the Internet Archive - just search it up. I used version 1.1.8. More details are in here.
02-09-2024, 06:39 PM
yeah .ipa has all of the models inside of rooms/mainroom
Pages: 1 2