Register - Login
Views: 99395233
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 12:21:24 PM
Jul - SM64 Hacking (Archive) - Toad's Tool 0.6.0 (On hiatus for an indefinite amount of time) New poll - New thread - Thread closed
Pages: 1 2 3 4 5 6 7 8 9 10 ... 19 20 21 22 23 24 25 26 27 28 Next newer thread | Next older thread
Polygon model importer, how soon do you want it?
Please vote or be transformed into Walluigi!
Now! Even if it means it will be buggy and limited to a single untextured model!
 
11.4%, 14 votes
I could wait a month for more features and textured model import.
 
22.8%, 28 votes
I want all the features you can cram in, even if it means waiting indefinitely!
 
56.9%, 70 votes
You shouldn't have announced anything and released it when ready!
 
4.1%, 5 votes
Me don't care!
 
4.9%, 6 votes
Multi-voting is disabled. 123 users have voted.

VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 208/621
EXP: 1135562
For next: 21557

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 07-15-08 03:13:47 AM (last edited by VL-Tone at 06-14-11 05:49 PM) Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42

(Update 2011-06-14: Toad's Tool 64 development is on hiatus for an indefinite amount of time.)



Hello fellow SM64 hackers!

About a month ago I sat down and decided to work on TT64 a little more, during a week-end.

A long requested feature (and an obvious one) has been the ability to import new 3d models from a file. I resisted, explaining how complicated it would be to implement. Keep in mind that my main objection was that dealing with replacement of existing models, because it would be complicated to make room for bigger models in a single bank, as moving polygon data around requires repointing every jumping commands and offsets. Another problem would be to try to translate every 3d objects parameters produced by 3d programs into SM64 polygon commands.

But then I made Flatworld Battlefield, a simple level template where it's easy to keep track of everything added. It certainly makes a difference, Messian was inspired to his wonderful polygon experiments because of the flexibility provided by this level.

Another thing is that I decided not to try to make a perfect 3d importer that can translate every features of 3d files, but instead starting with a simple one untextured model importer.

Don't ask me for 3DS support, I won't provide it, ever. I choose a more open text-based format, Wavefront .OBJ. Some of you may know about this format, it's supported by the majority of 3d programs, it's often used as a way to move 3d objects between different programs.

So, after a long weekend (and a few hours trying to squash a very stupid bug), I managed to implement a working .obj importer!





For now it only does one thing: it replaces the flat square geometry in Flatworld with the imported .obj model, and only uses the grass texture from BBB for the whole level geometry (the grass texture was modified in the levels seen in the screenshots).

I could release a new version of TT64 with this simple import feature in under a week.

But, I think people may feel too limited with this, and I don't want to deal with endless bug reports about this one because I intend to make it much better, and these changes may alter the importer enough to make the bug reports irrelevant. Anyway that's why I'm asking, if the majority wants it now, I'll release it, as is.

What I was really planning though is to have these features added before a release (and call it TT64 6.0):
-An actual interface for the importer (with a preview and parameters).
-Multiple objects import, though I'm not sure if they would be imported as individual, moveable objects, or simply added to the level geometry.
-Importing textures right from the model (using the complement .mtl file that points to texture files)
-Allow the user to set some parameters for each imported model.

This could take me a month or two... (actually it would only take me a few full days of programming, but as you may know, I don't get much free time, though it's getting better)

As for the last option, having a full featured totally perfect 3d model importer, it could take more than 6 months or never happen.

One last thing, I know I have a tendency to "disappear" without too much warning, so I could understand if some of you would've like it better if I've waited until an actual release to announce anything.

At the same time, I was sitting on this, and wanted to share it with you guys, it's pretty exciting when you realize that you could build anything (within the polygon count limitations) with a 3d program and use it as a level in SM64.

I think you can trust me on releasing the 3d importer feature within a reasonable time (this also depends on the poll result), I have more time now, and this feature is motivating.

I guess (hope) it's better than having no news from me!

____________________
Deleted User
Collection of nobodies
Posted on 07-15-08 03:50:40 AM Link
Well you might as well release what you have now, then keep working on it. That way you'll satisfy the people who really want it now and those who want to wait for some more complex functionality can just not download it or something.

____________________


===================
[Posted by NightKev]
Lyskar
12210
-The Chaos within trumps the Chaos without-
Level: 192


Posts: 1581/12211
EXP: 99240623
For next: 632948

Since: 07-03-07

From: 52-2-88-7

Since last post: 7.4 years
Last activity: 7.3 years

Posted on 07-15-08 05:41:40 AM Link

Time/Date

07-14-08 11:41:40pm

Posts

1581

Days Here

377

Level

54
Metal_Man88
Local Moderator
Take your time, IMO. The more time you have, the less likely the impatient people who would want it now would get it and then wind up doing more complaining about it than using it.

____________________
Original Layout © Tobias Kelmandia
Deleted User
Collection of nobodies
Posted on 07-15-08 10:26:16 AM Link
Originally posted by NightKev
Well you might as well release what you have now, then keep working on it. That way you'll satisfy the people who really want it now and those who want to wait for some more complex functionality can just not download it or something.

I reckon this is the way to go. BTW VL-Tone, it is fantastic that you got model importation working!
zelda rocks

Level: 11


Posts: 7/18
EXP: 5599
For next: 386

Since: 08-05-07


Since last post: 13.0 years
Last activity: 11.6 years

Posted on 07-15-08 10:38:24 AM (last edited by zelda rocks at 07-15-08 07:43 AM) Link
I remember that the Zelda64 model extractor uses the .OBJ format, this means you could potentially import ocarina of time into mario 64!!!

Also, you could make the .obj file from scratch, meaning you could potentially modify the levels to your hearts content, right?
messiaen
Catgirl
Level: 68


Posts: 168/1085
EXP: 2594175
For next: 134625

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 07-15-08 02:45:01 PM Link
I would say take your time to implement things correctly, as these are crucial decisions to the future of TT64. I'm curious about the output generated by the importer, how is the generated data organized? How can much can be done about textures with manual editing? Also, could you explain more this:

"- Multiple objects import, though I'm not sure if they would be imported as individual, moveable objects, or simply added to the level geometry."

What do you mean by "movable objects" ? If you are thinking of a modular approach with new objects/behaviors like I've been experimenting with, I really wouldn't recommend it. The game can't handle it properly when you try to insert more complex models, which leads to slowdown and sometimes unpredictable bugs. But if you are thinking something like a "internal" TT64 format which will be then translated to the final polygon/collision data, then this could lead to more flexibility.

Regardings the interface for the importer, perhaps in the future you could couple it with a "bank selector", as you already have all objects/banks sorted in the SM64GeoLayoutPtrs.txt file. Something like a "Create New Level" feature, in which you select the level to replace and start with just the shared banks loaded.

Keep us updated on your progress and problems/questions you may be facing!
rstewart215804
User
Crazed Mario 64 Hacker!!!
Level: 11


Posts: 12/18
EXP: 5579
For next: 406

Since: 09-13-07


Since last post: 13.2 years
Last activity: 11.7 years

Posted on 07-15-08 07:01:10 PM Link
Wavefront obj files. Nice choice. I myself use them for collision. The file format is quite similar to that of SM64 collision geometry. Lets see I had some code somewhere to load it into Director. A yes here it is…




------------------------------------------
global ifile --the inport file
global efile --the export file
global vb --the vertex buffer
global mb --the mesh buffer
global sb --the special buffer
global st --the selected terrain
global sp --special proptery on
------------------------------------------
on StartUp()
ifile = 0
efile = 0
vb = []
mb = []
OpenFile()
end

on CleanUp()
member("textbox 1").text = ""
end

on stopmovie
if baGetPointer(ifile) <> -1 then
baCloseFile(ifile)
end if
if baGetPointer(efile) <> -1 then
baCloseFile(efile)
end if
CleanUp()
end

on OpenFile()
set wf = new(xtra "fileio")
set objfile = displayOpen( wf )
set wf = 0
member("world").resetworld()
ifile = baGetFile(objfile, "r")
member("inport fn").text = objfile

ImportWavefront()
end

on SaveFile()
set wf = new(xtra "fileio")
set objfile = displaySave( wf )
set wf = 0
efile = baGetFile(objfile, "w")
member("export fn").text = objfile
end

on Export()
writeoffset = integer(member("").text)
baMovePointer(efile,writeoffset, "start")
baWriteUShort(efile, 64)
baWriteUShort(efile, vb.count())
repeat with v = 1 to vb.count()
baWriteShort(efile, (vb[v].x) )
baWriteShort(efile, (vb[v].y) )
baWriteShort(efile, (vb[v].x) )
end repeat
repeat with m = 1 to mb.count()
fb = member("world").ModelResource
baWriteUShort(efile, mb[m])
baWriteUShort(efile, fb[m].face.count )
repeat with f = 1 to fb[m].face.count
baWriteUShort(efile, (fb.face[f].vertices[1] - 1) )
baWriteUShort(efile, (fb.face[f].vertices[2] - 1) )
baWriteUShort(efile, (fb.face[f].vertices[3] - 1) )
if CTT(mb[m]) = true then
baWriteUShort(efile, sb[m][f] )
end if
end repeat
end repeat
end
------------------------------------------------
--------------------Editing--------------------
------------------------------------------------
on SelectObj(idn)
st = idn
end

on SelectType(tpe)
setat mb,st,tpe
if CTT(tpe) = true then
sp = true
end if
end
------------------------------------------------
--------------------Utilites--------------------
------------------------------------------------
on CTT(mn)
case mn of
14:return true --water
36:return true --sand
37:return true --sand
39:return true
44:return true --wind
45:return true
otherwise:
return false
end case
end

on Update()
if sp = true then
--show parameters
end if
end
------------------------------------------------
---------------Wavefront Section----------------
------------------------------------------------
on ImportWavefront()
vb = []
fb = []
cobj = false
cmdc = " "
repeat while cmdc <> ""
cmdc = baReadText(ifile, 1)
case cmdc of
"v":--vertex----------------------
ln = baReadLine(ifile)
xpos = float(ln.word[1])
ypos = float(ln.word[2])
zpos = float(ln.word[3])
vb.append(vector(xpos,ypos,zpos))
"f":--faces-----------------------
ln = baReadLine(ifile)
v1 = 0
v2 = 0
v3 = 0
if offset("/",ln.word[1]) = 0 then
v1 = integer(ln.word[1])
else
v1 = integer(ln.word[1].char[1 .. offset("/",ln.word[1])])
end if
------------------------------------
if offset("/",ln.word[2]) = 0 then
v2 = integer(ln.word[2])
else
v2 = integer(ln.word[2].char[1 .. offset("/",ln.word[2])])
end if
------------------------------------
if offset("/",ln.word[3]) = 0 then
v3 = integer(ln.word[3])
else
v3 = integer(ln.word[3].char[1 .. offset("/",ln.word[3])])
end if
-------------------------------------
fb.append([v1,v2,v3])
"g":--name and end of obj---------
objn = baReadLine(ifile)
if cobj = true then
CreateWFObj(fb)
fb = []
end if
if objn.char.count > 2 then
cobj = true
member("textbox 1").text = member("textbox 1").text & "Terrain" & objn & RETURN
else
cobj = false
end if
--------------------------------
(numtochar(10)):
(numtochar(13)):
otherwise:--all other junk--
baReadLine(ifile)
end case
end repeat
--------------------------------------
baCloseFile(ifile)
--------------------------------------
end

on CreateWFObj(fb)
nvs = vb.count()
nfs = fb.count()
nm = member("world").newMesh("Mesh" && string(_system.milliseconds), nfs, nvs)
nm.vertexList = vb
repeat with f = 1 to nfs
nm.face[f].vertices = fb[f]
end repeat
nm.generateNormals(#flat)
nm.build()
member("world").newModel("Mesh" && string(_system.milliseconds), nm)
end
------------------------------------------------



Its works somewhat but I will fix it later. Anyways, great job on it so far. If you need any help VL-Tone, just PM me. Have Director 11 as well and would be happy to try ease the workload.


____________________
Just you wait until next time. Until then, keep that Control Stick smokin’! Buwaa ha ha!
Mega Mario XD
80
Level: 22


Posts: 81/81
EXP: 53043
For next: 5307

Since: 10-26-07

From: Australia

Since last post: 13.8 years
Last activity: 13.8 years

Posted on 07-15-08 09:24:59 PM Link
This is awesome. Keep up the good work.
AlexAR
Member
Level: 39


Posts: 49/306
EXP: 388192
For next: 16579

Since: 11-30-07


Since last post: 9.0 years
Last activity: 9.0 years

Posted on 07-16-08 12:46:32 AM Link
This is beyond extraordinary VL-Tone, truly. I have so many questions about this, but it's probably better if I just keep my ignorant mouth shut. But, I have to ask one thing. Did you make those 3d models, simply "import" them into the game via whatever method, and those models "worked" perfectly? As in, did you have to worry about adding collision to em.

I see in your screenshot, Mario is clearly standing on it. Do slopes act like slopes? Steep walls act like walls? If I designed a simple small 3d landscape with a hill, square box and floating platform, would it all act right without me having to explicitly tell the game how Mario should interact with each land feature?
Boing
450
Level: 46


Posts: 73/458
EXP: 709707
For next: 2067

Since: 12-16-07

From: Michigan, US

Since last post: 11.1 years
Last activity: 11.1 years

Posted on 07-16-08 03:06:40 AM Link


<object width="80" height="185">

<embed src="http://bbsplat.googlepages.com/bounce.swf" width="80" height="185">
</embed>
</object>


I would personally much rather see a built-in geometry editor, but hey, beggars can't be choosers. I think you should keep adding features and release it once it is a bit more complete.

____________________

VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 209/621
EXP: 1135562
For next: 21557

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 07-16-08 03:15:49 AM (last edited by VL-Tone at 07-16-08 12:26 AM) Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Ok there seems to be some divergence of opinions in the poll, as nobody voted (yet) for the second choice. So I guess that ironically I'll do something in between the first and third choice, that is: not releasing the barebones importer now, but not waiting indefinitely either until I get a perfect importer with every features possible. Also I guess I'll have to lean more on the third choice since it got more votes.



Originally posted by zelda rocks
I remember that the Zelda64 model extractor uses the .OBJ format, this means you could potentially import ocarina of time into mario 64!!!

Also, you could make the .obj file from scratch, meaning you could potentially modify the levels to your hearts content, right?



You can only make the .obj file from scratch using a 3d program, you can't use models already in the game, and for reasons I mentioned before you won't be able to modify the existing levels, only Flatworld.


Originally posted by messiaen
I would say take your time to implement things correctly, as these are crucial decisions to the future of TT64. I'm curious about the output generated by the importer, how is the generated data organized? How can much can be done about textures with manual editing? Also, could you explain more this:

"- Multiple objects import, though I'm not sure if they would be imported as individual, moveable objects, or simply added to the level geometry."

What do you mean by "movable objects" ? If you are thinking of a modular approach with new objects/behaviors like I've been experimenting with, I really wouldn't recommend it. The game can't handle it properly when you try to insert more complex models, which leads to slowdown and sometimes unpredictable bugs. But if you are thinking something like a "internal" TT64 format which will be then translated to the final polygon/collision data, then this could lead to more flexibility.

Regardings the interface for the importer, perhaps in the future you could couple it with a "bank selector", as you already have all objects/banks sorted in the SM64GeoLayoutPtrs.txt file. Something like a "Create New Level" feature, in which you select the level to replace and start with just the shared banks loaded.

Keep us updated on your progress and problems/questions you may be facing!



When I talk about movable objects, I am indeed talking about independent objects like the platforms you created. I guess the problems with having a lot of these is the multiple collision behaviors that mainly slow down the game, I think you're right that merging the collision polygons for moveable platforms with the main platform would be a better approach. I know you're interested in a feature where the main collision polygons could be generated for a level using polygons from each movable platform, but to make something like that user friendly wouldn't be that simple (just an example of a potential problem, how do you determine which object needs to have their collision generated?). In any case, there is still a need for independent objects that have their own collision data: anything moving, rotating, tilting... Importing models as usable 0x24 objects could also be useful to create new enemies or characters...

For now, I'll focus on importation of the main level geometry, with the possibility of splitting the model in groups that are put in the level using 0x15 geometry layout commands. Importation of individual objects will come later.

As for a bank selector, I'm also planning it, as well as the possibility of having multiple "Flatworld" levels.

Originally posted by rstewart215804
Wavefront obj files. Nice choice. I myself use them for collision. The file format is quite similar to that of SM64 collision geometry. Lets see I had some code somewhere to load it into Director. A yes here it is…




Code snippet...



Its works somewhat but I will fix it later. Anyways, great job on it so far. If you need any help VL-Tone, just PM me. Have Director 11 as well and would be happy to try ease the workload.



Thanks for the code! I may not use it as such but maybe I could take a look at the export code if I ever come around to implement such a feature.

BTW your importing code is not that different from mine, except for the missing normals and texture coordinates importation, and the fact that my importer can also deal with faces that have 4 vertices (some 3d programs will generate faces with either 3 or 4 vertices per face)

Here's a little tip for dealing with the "/" separating without resorting to using the "offset command".


_player.itemDelimiter="/"



Using this command, you'll be able to refer to vertices numbers in faces commands as items.

(("f 5/6/7/8").word[2]).item[3] would return "7". (The parenthesis around "("f 5/6/7/8").word[2]" are important)

Don't forget to set the item delimiter back to "," when your routine is finished.

I didn't have any major problems coding the .obj importer itself. The "hard" part was translating the imported vertices, triangles, normals and texture coordinates into a n64 GBI commands display list. I had to build some code to deal with the texture cache limitation (though the result is barely optimized). It wasn't "that hard", but it took me much more time coding that part than simply importing the .obj data into variables.

As for needing your help, I don't think I'll give you my source file, as you would probably find it messy and hard to understand TT64 would need yet another rewrite, but I don't feel like it at this point. Still, I'll try to see what I could ask you, for example maybe I could ask you to make a routine that creates and merge collision data from multiple independent objets (for the feature that messian is asking for). Not that I can't do it myself, but it could save me some work and stress.

Originally posted by AlexAR
This is beyond extraordinary VL-Tone, truly. I have so many questions about this, but it's probably better if I just keep my ignorant mouth shut. But, I have to ask one thing. Did you make those 3d models, simply "import" them into the game via whatever method, and those models "worked" perfectly? As in, did you have to worry about adding collision to em.

I see in your screenshot, Mario is clearly standing on it. Do slopes act like slopes? Steep walls act like walls? If I designed a simple small 3d landscape with a hill, square box and floating platform, would it all act right without me having to explicitly tell the game how Mario should interact with each land feature?



I created these models using a simple 3d program (Cheetah 3d on the Mac) but I could've used Maya, and you could also use 3DStudio Max or Blender, amongst many others. I used simple geometric figures, a sphere, a torus and generated a height terrain, mainly for testing purposes. You can make something much more complicated than this with your favorite 3d program, keeping in mind that the n64 has a limited amount of memory, and too many polygons would generate to much data and crash the game upon loading the level.

The collision data was automatically generated along with the polygon data by TT64 while importing, along with a "death floor" at the bottom of the level (you don't have to create it yourself). In the screenshots, I set the type of terrain to "ultra non slippery" as used in the very steep slanted platform in the third Bowser course.

My intended goal was to make a small "Super Mario Galaxy"-like level. Mario can walk around the sides of the sphere almost in a vertical way, but unfortunately he'll still fall if he gets really close to the side, even with this type of terrain he can't walk on a perfectly vertical wall, and even less under the sphere.

I'm thinking of allowing the user to set different parameters to each model groups found in an .obj file, collision type would be one of them.

As far as walking on the top of the sphere, the effect is close to SMG, except when Mario stops walking, he'll stand vertically, unlike SMG where Mario will remain perpendicular to the ground. While there may be a way to make Mario remain perpendicular when standing still, there's no way that a simple hack will enable Mario to walk all around a sphere like in SMG. The gravity in SM64 has only one direction, while in SMG gravity can pull Mario from many different directions, Nintendo had to build a special gravity engine for SMG. Not only it would be really hard to program into SM64, but I doubt that the N64 processor could handle it.

Originally posted by Boing
I would personally much rather see a built-in geometry editor, but hey, beggars can't be choosers. I think you should keep adding features and release it once it is a bit more complete.


Do you know of any 3d game level editors that feature built-in geometry editors? As far as I know, most rely on importation of external objects created with a dedicated 3d program. Mario 64 models themselves were created using an external 3d editor (Nichimen N-World, which I can't find anywhere to download unfortunately).

____________________
Deleted User
Collection of nobodies
Posted on 07-16-08 08:21:07 AM Link
I have a question VL-Tone. Will the version of Toad's Tool 64 with model importation support hardware accelaration on Vista?
Plareon
User
Level: 13


Posts: 24/24
EXP: 8577
For next: 1690

Since: 09-28-07

From: North America

Since last post: 13.8 years
Last activity: 13.8 years

Posted on 07-16-08 12:28:41 PM (last edited by Plareon at 07-16-08 09:40 AM) Link
I... I... I am speechless.





VL-Tone! You have probably reached the limit of hacking so high that Nintendo didn't even consider when they made Mario 64 for ANYONE to be able to do this! If Nintendo sees this, or if they already saw it, they'll be like, "Twelve years ago we made a great game. We thought it was impossible to go this far. We were wrong..."


You rock!

(I guess I wasn't THAT speechless after all...)

____________________
If I had a cookie, I'd eat it. But I don't. I guess this hat will have to do.
RomanianGirl

Level: 16


Posts: 13/42
EXP: 19621
For next: 635

Since: 01-31-08

From: Canada

Since last post: 12.9 years
Last activity: 12.9 years

Posted on 07-17-08 10:59:17 PM Link
This is very awesome! A part of me wants this immediately, but it is definitely better if you took the time to make sure everything is alright. Great job!

Do 3D programs offer the option to save as .obj? I have worked with Maya before, but I didn't explore the save options. I apologize if this question is useless, but I would like to know. Thank you!
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 211/621
EXP: 1135562
For next: 21557

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 07-18-08 02:44:50 AM (last edited by VL-Tone at 07-17-08 11:48 PM) Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by Blaster
I have a question VL-Tone. Will the version of Toad's Tool 64 with model importation support hardware accelaration on Vista?


Yes it will, though I may release separate versions for XP, Vista, PPC and intel Macs.

Originally posted by RomanianGirl
Do 3D programs offer the option to save as .obj? I have worked with Maya before, but I didn't explore the save options. I apologize if this question is useless, but I would like to know. Thank you!


I'd say that the vast majority of 3d programs support .obj exporting, most have it built-in, some require a plug-in. Maya includes a plug-in, but you have to enable/load it to get full functionality by checking some checkbox.

____________________
messiaen
Catgirl
Level: 68


Posts: 175/1085
EXP: 2594175
For next: 134625

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 07-19-08 04:06:01 PM (last edited by messiaen at 07-19-08 01:06 PM) Link
I have a suggestion to make the level terrain/collision data a bit more modular, so that TT64 could handle level meshes (object groups in the original .obj file) in its interface.

The 0x15 call display list command already can give a modular aspect to each object group in the .obj file. What about if you separated each object group in the main 0x40 collision vertex list by a fake (pseudo) vertice? Or even two, one at the beggining and one at the end of each object.

These fake vertices could contain pointers to the respective 0x15 Geo Layout command and also to the respective triangle group in the collision data (I'm supposing each object has its own triangle command). With this data, it would be easier to make TT64 move/rotate/scale/delete object groups.

If this doesn't sounds good, then ignore it, it's just a idea I had earlier on .
Raccoon Sam
Member
free speech disabled
Level: 32


Posts: 65/187
EXP: 187686
For next: 18756

Since: 07-25-07

From: Somewhat

Since last post: 4.4 years
Last activity: 1.0 years

Posted on 07-19-08 10:12:15 PM Link
OBJ? Awright! To me, 3DS is nothing more than triangulation issues.

Anyone who wants to try their best with 3D modeling, below are some Free 3D modelers that support exporting to OBJ.
-Metasequoia
-Blender
-Sketchup
Stevoisiak
Member
Level: 38


Posts: 98/283
EXP: 345494
For next: 24953

Since: 11-22-07

From: New York, Long Island

Since last post: 12.3 years
Last activity: 5.6 years

Posted on 07-20-08 07:55:10 PM Link
I say for now just release a small seperate app for the importer. (Like you did with the text editor)
VL-Tone
Member
Super Mario 64 forum moderator
Level: 53


Posts: 212/621
EXP: 1135562
For next: 21557

Since: 07-27-07

From: Montreal, Canada

Since last post: 4.7 years
Last activity: 1.2 years

Posted on 07-21-08 12:09:43 AM Link
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
Originally posted by messiaen
I have a suggestion to make the level terrain/collision data a bit more modular, so that TT64 could handle level meshes (object groups in the original .obj file) in its interface.

The 0x15 call display list command already can give a modular aspect to each object group in the .obj file. What about if you separated each object group in the main 0x40 collision vertex list by a fake (pseudo) vertice? Or even two, one at the beggining and one at the end of each object.

These fake vertices could contain pointers to the respective 0x15 Geo Layout command and also to the respective triangle group in the collision data (I'm supposing each object has its own triangle command). With this data, it would be easier to make TT64 move/rotate/scale/delete object groups.

If this doesn't sounds good, then ignore it, it's just a idea I had earlier on .



I understand what you're getting at, though I'm not sure it would be the best way to do it. Anyway, I think that it would require too much programming for something that you could do from inside your favorite 3d program. Remember that with a 3d program, you can move/rotate/scale/delete each of theses groups anyway...

Originally posted by Stevoisiak
I say for now just release a small seperate app for the importer. (Like you did with the text editor)


That's a good idea, I didn't think about that... The problem is that the current version of TT64 is dependent on the already generated m64geometry file to draw polygons. To load modified polygons you need to delete that file so it will be re-generated when opening the ROM, and you'd have to do that each time you re-import your .obj file.

My current development version (which will be version 6.0) decode polygon in RAM gradually as needed and can reload specific models when requested, such as when you import a new level geometry.


____________________
Stevoisiak
Member
Level: 38


Posts: 99/283
EXP: 345494
For next: 24953

Since: 11-22-07

From: New York, Long Island

Since last post: 12.3 years
Last activity: 5.6 years

Posted on 07-21-08 01:49:43 PM Link
Originally posted by VL-Tone
Originally posted by Stevoisiak
I say for now just release a small seperate app for the importer. (Like you did with the text editor)


That's a good idea, I didn't think about that... The problem is that the current version of TT64 is dependent on the already generated m64geometry file to draw polygons. To load modified polygons you need to delete that file so it will be re-generated when opening the ROM, and you'd have to do that each time you re-import your .obj file.

My current development version (which will be version 6.0) decode polygon in RAM gradually as needed and can reload specific models when requested, such as when you import a new level geometry.



Yeah, I was thinking that would be a good idea. For now though, maybe TT can just check if there are any model errors and if so, regenerate the file. Or just have a question on startup asking to remake it.
Pages: 1 2 3 4 5 6 7 8 9 10 ... 19 20 21 22 23 24 25 26 27 28 Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - Toad's Tool 0.6.0 (On hiatus for an indefinite amount of time) New poll - New thread - Thread closed


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

41 database queries, 5 query cache hits.
Query execution time:  0.164145 seconds
Script execution time:  0.053982 seconds
Total render time:  0.218127 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 119 column 11 - Warning: <form> isn't allowed in <table> elements
line 118 column 10 - Info: <table> previously mentioned
line 120 column 11 - Warning: missing <tr>
line 120 column 119 - Warning: missing </font> before </td>
line 124 column 16 - Warning: plain text isn't allowed in <tr> elements
line 120 column 11 - Info: <tr> previously mentioned
line 125 column 68 - Warning: missing </nobr> before </td>
line 141 column 68 - Warning: missing </nobr> before <tr>
line 147 column 35 - Warning: missing <tr>
line 147 column 50 - Warning: missing </font> before </td>
line 148 column 37 - Warning: unescaped & or unknown entity "&id"
line 147 column 233 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 96 - Warning: unescaped & or unknown entity "&page"
line 149 column 128 - Warning: unescaped & or unknown entity "&page"
line 149 column 160 - Warning: unescaped & or unknown entity "&page"
line 149 column 192 - Warning: unescaped & or unknown entity "&page"
line 149 column 224 - Warning: unescaped & or unknown entity "&page"
line 149 column 256 - Warning: unescaped & or unknown entity "&page"
line 149 column 288 - Warning: unescaped & or unknown entity "&page"
line 149 column 320 - Warning: unescaped & or unknown entity "&page"
line 149 column 352 - Warning: unescaped & or unknown entity "&page"
line 149 column 389 - Warning: unescaped & or unknown entity "&page"
line 149 column 423 - Warning: unescaped & or unknown entity "&page"
line 149 column 457 - Warning: unescaped & or unknown entity "&page"
line 149 column 491 - Warning: unescaped & or unknown entity "&page"
line 149 column 525 - Warning: unescaped & or unknown entity "&page"
line 149 column 559 - Warning: unescaped & or unknown entity "&page"
line 149 column 593 - Warning: unescaped & or unknown entity "&page"
line 149 column 627 - Warning: unescaped & or unknown entity "&page"
line 149 column 661 - Warning: unescaped & or unknown entity "&page"
line 149 column 695 - Warning: unescaped & or unknown entity "&page"
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 732 - Warning: missing </font> before </table>
line 152 column 73 - Warning: missing </b> before </td>
line 155 column 210 - Warning: discarding unexpected </a>
line 156 column 131 - Warning: missing <tr>
line 159 column 195 - Warning: discarding unexpected </a>
line 160 column 133 - Warning: missing <tr>
line 163 column 209 - Warning: discarding unexpected </a>
line 164 column 132 - Warning: missing <tr>
line 167 column 195 - Warning: discarding unexpected </a>
line 168 column 133 - Warning: missing <tr>
line 171 column 144 - Warning: discarding unexpected </a>
line 172 column 131 - Warning: missing <tr>
line 175 column 66 - Warning: missing </font> before </td>
line 175 column 140 - Warning: plain text isn't allowed in <tr> elements
line 175 column 25 - Info: <tr> previously mentioned
line 182 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 184 column 9 - Warning: missing <tr>
line 202 column 13 - Warning: missing <tr>
line 205 column 73 - Warning: <style> isn't allowed in <td> elements
line 205 column 9 - Info: <td> previously mentioned
line 205 column 1511 - Warning: missing </font> before <h2>
line 205 column 1582 - Warning: inserting implicit <font>
line 206 column 1 - Warning: inserting implicit <font>
line 205 column 137 - Warning: missing </div>
line 249 column 15 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 250 column 25 - Warning: missing <tr>
line 257 column 33 - Warning: missing <tr>
line 262 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 264 column 9 - Warning: missing <tr>
line 282 column 13 - Warning: missing <tr>
line 285 column 73 - Warning: <style> isn't allowed in <td> elements
line 285 column 9 - Info: <td> previously mentioned
line 285 column 960 - Error: <z> is not recognized!
line 285 column 960 - Warning: discarding unexpected <z>
line 285 column 982 - Warning: discarding unexpected </z>
line 285 column 1008 - Error: <z> is not recognized!
line 285 column 1008 - Warning: discarding unexpected <z>
line 285 column 1015 - Warning: discarding unexpected </z>
line 285 column 1045 - Error: <z> is not recognized!
line 285 column 1045 - Warning: discarding unexpected <z>
line 285 column 1051 - Warning: discarding unexpected </z>
line 285 column 1077 - Error: <z> is not recognized!
line 285 column 1077 - Warning: discarding unexpected <z>
line 285 column 1082 - Warning: discarding unexpected </z>
line 287 column 15 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 288 column 25 - Warning: missing <tr>
line 295 column 33 - Warning: missing <tr>
line 301 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 303 column 9 - Warning: missing <tr>
line 321 column 13 - Warning: missing <tr>
line 329 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 331 column 9 - Warning: missing <tr>
line 349 column 13 - Warning: missing <tr>
line 364 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 366 column 9 - Warning: missing <tr>
line 384 column 13 - Warning: missing <tr>
line 582 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 584 column 9 - Warning: missing <tr>
line 602 column 13 - Warning: missing <tr>
line 608 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 610 column 9 - Warning: missing <tr>
line 628 column 13 - Warning: missing <tr>
line 636 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 638 column 9 - Warning: missing <tr>
line 656 column 13 - Warning: missing <tr>
line 659 column 73 - Warning: <link> isn't allowed in <td> elements
line 659 column 9 - Info: <td> previously mentioned
line 659 column 297 - Warning: missing </font> before <p>
line 660 column 334 - Warning: inserting implicit <font>
line 661 column 376 - Warning: discarding unexpected <param>
line 664 column 576 - Warning: discarding unexpected </font>
line 664 column 583 - Warning: inserting implicit <p>
line 668 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 670 column 9 - Warning: missing <tr>
line 688 column 13 - Warning: missing <tr>
line 691 column 73 - Warning: <style> isn't allowed in <td> elements
line 691 column 9 - Info: <td> previously mentioned
line 691 column 1511 - Warning: missing </font> before <blockquote>
line 695 column 2025 - Warning: inserting implicit <font>
line 695 column 2025 - Warning: missing </font> before <hr>
line 695 column 2093 - Warning: inserting implicit <font>
line 695 column 2093 - Warning: missing </font> before <hr>
line 698 column 1 - Warning: inserting implicit <font>
line 698 column 1 - Warning: missing </font> before <blockquote>
line 702 column 2628 - Warning: inserting implicit <font>
line 702 column 2628 - Warning: missing </font> before <hr>
line 702 column 2960 - Warning: inserting implicit <font>
line 702 column 2960 - Warning: missing </font> before <hr>
line 711 column 4131 - Warning: inserting implicit <font>
line 712 column 1 - Warning: inserting implicit <font>
line 712 column 1 - Warning: missing </font> before <blockquote>
line 719 column 5455 - Warning: inserting implicit <font>
line 719 column 5455 - Warning: missing </font> before <hr>
line 719 column 5526 - Warning: inserting implicit <font>
line 719 column 5526 - Warning: missing </font> before <blockquote>
line 721 column 5773 - Warning: inserting implicit <font>
line 721 column 5773 - Warning: missing </font> before <hr>
line 724 column 1 - Warning: inserting implicit <font>
line 724 column 1 - Warning: missing </font> before <hr>
line 726 column 6045 - Warning: inserting implicit <font>
line 727 column 1 - Warning: inserting implicit <font>
line 727 column 1 - Warning: missing </font> before <blockquote>
line 734 column 6642 - Warning: inserting implicit <font>
line 734 column 6642 - Warning: missing </font> before <hr>
line 735 column 1 - Warning: inserting implicit <font>
line 735 column 1 - Warning: missing </font> before <blockquote>
line 746 column 8030 - Warning: inserting implicit <font>
line 746 column 8030 - Warning: missing </font> before <hr>
line 747 column 1 - Warning: inserting implicit <font>
line 747 column 1 - Warning: missing </font> before <hr>
line 749 column 1 - Warning: inserting implicit <font>
line 749 column 1 - Warning: missing </font> before <blockquote>
line 760 column 10814 - Warning: inserting implicit <font>
line 760 column 10814 - Warning: missing </font> before <hr>
line 760 column 10876 - Warning: inserting implicit <font>
line 760 column 10876 - Warning: missing </font> before <hr>
line 761 column 1 - Warning: inserting implicit <font>
line 691 column 137 - Warning: missing </div>
line 764 column 15 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 765 column 25 - Warning: missing <tr>
line 772 column 33 - Warning: missing <tr>
line 777 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 779 column 9 - Warning: missing <tr>
line 797 column 13 - Warning: missing <tr>
line 814 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 816 column 9 - Warning: missing <tr>
line 834 column 13 - Warning: missing <tr>
line 842 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 844 column 9 - Warning: missing <tr>
line 862 column 13 - Warning: missing <tr>
line 865 column 73 - Warning: <style> isn't allowed in <td> elements
line 865 column 9 - Info: <td> previously mentioned
line 865 column 1511 - Warning: missing </font> before <blockquote>
line 865 column 1590 - Warning: inserting implicit <font>
line 865 column 1590 - Warning: missing </font> before <hr>
line 865 column 1654 - Warning: inserting implicit <font>
line 865 column 1654 - Warning: missing </font> before <hr>
line 866 column 1 - Warning: inserting implicit <font>
line 866 column 1 - Warning: missing </font> before <blockquote>
line 869 column 1910 - Warning: inserting implicit <font>
line 869 column 1910 - Warning: missing </font> before <hr>
line 869 column 1979 - Warning: inserting implicit <font>
line 869 column 1979 - Warning: missing </font> before <hr>
line 870 column 1 - Warning: inserting implicit <font>
line 865 column 137 - Warning: missing </div>
line 874 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 876 column 9 - Warning: missing <tr>
line 894 column 13 - Warning: missing <tr>
line 907 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 909 column 9 - Warning: missing <tr>
line 927 column 13 - Warning: missing <tr>
line 938 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 940 column 9 - Warning: missing <tr>
line 958 column 13 - Warning: missing <tr>
line 964 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 966 column 9 - Warning: missing <tr>
line 984 column 13 - Warning: missing <tr>
line 987 column 73 - Warning: <style> isn't allowed in <td> elements
line 987 column 9 - Info: <td> previously mentioned
line 987 column 1511 - Warning: missing </font> before <blockquote>
line 987 column 1590 - Warning: inserting implicit <font>
line 987 column 1590 - Warning: missing </font> before <hr>
line 987 column 1655 - Warning: inserting implicit <font>
line 987 column 1655 - Warning: missing </font> before <hr>
line 994 column 2579 - Warning: inserting implicit <font>
line 995 column 1 - Warning: inserting implicit <font>
line 995 column 1 - Warning: missing </font> before <blockquote>
line 998 column 2938 - Warning: inserting implicit <font>
line 998 column 2938 - Warning: missing </font> before <hr>
line 998 column 3005 - Warning: inserting implicit <font>
line 998 column 3005 - Warning: missing </font> before <hr>
line 999 column 1 - Warning: inserting implicit <font>
line 987 column 137 - Warning: missing </div>
line 1006 column 9 - Warning: <div> isn't allowed in <table> elements
line 178 column 17 - Info: <table> previously mentioned
line 1008 column 9 - Warning: missing <tr>
line 1026 column 13 - Warning: missing <tr>
line 1039 column 17 - Warning: missing <tr>
line 1039 column 17 - Warning: discarding unexpected <table>
line 1042 column 35 - Warning: missing <tr>
line 1042 column 96 - Warning: unescaped & or unknown entity "&page"
line 1042 column 128 - Warning: unescaped & or unknown entity "&page"
line 1042 column 160 - Warning: unescaped & or unknown entity "&page"
line 1042 column 192 - Warning: unescaped & or unknown entity "&page"
line 1042 column 224 - Warning: unescaped & or unknown entity "&page"
line 1042 column 256 - Warning: unescaped & or unknown entity "&page"
line 1042 column 288 - Warning: unescaped & or unknown entity "&page"
line 1042 column 320 - Warning: unescaped & or unknown entity "&page"
line 1042 column 352 - Warning: unescaped & or unknown entity "&page"
line 1042 column 389 - Warning: unescaped & or unknown entity "&page"
line 1042 column 423 - Warning: unescaped & or unknown entity "&page"
line 1042 column 457 - Warning: unescaped & or unknown entity "&page"
line 1042 column 491 - Warning: unescaped & or unknown entity "&page"
line 1042 column 525 - Warning: unescaped & or unknown entity "&page"
line 1042 column 559 - Warning: unescaped & or unknown entity "&page"
line 1042 column 593 - Warning: unescaped & or unknown entity "&page"
line 1042 column 627 - Warning: unescaped & or unknown entity "&page"
line 1042 column 661 - Warning: unescaped & or unknown entity "&page"
line 1042 column 695 - Warning: unescaped & or unknown entity "&page"
line 1042 column 50 - Warning: missing </font> before </td>
line 1042 column 732 - Warning: missing </font> before </table>
line 1044 column 35 - Warning: missing <tr>
line 1044 column 50 - Warning: missing </font> before </td>
line 1045 column 37 - Warning: unescaped & or unknown entity "&id"
line 1044 column 233 - Warning: missing </font> before </table>
line 1046 column 17 - Warning: discarding unexpected </textarea>
line 1046 column 28 - Warning: discarding unexpected </form>
line 1046 column 35 - Warning: discarding unexpected </embed>
line 1046 column 43 - Warning: discarding unexpected </noembed>
line 1046 column 53 - Warning: discarding unexpected </noscript>
line 1046 column 64 - Warning: discarding unexpected </noembed>
line 1046 column 74 - Warning: discarding unexpected </embed>
line 1046 column 82 - Warning: discarding unexpected </table>
line 1046 column 90 - Warning: discarding unexpected </table>
line 1048 column 9 - Warning: missing </font> before <table>
line 1060 column 25 - Warning: discarding unexpected </font>
line 1069 column 57 - Warning: discarding unexpected </font>
line 1047 column 1 - Warning: missing </center>
line 120 column 63 - Warning: <img> lacks "alt" attribute
line 125 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 125 column 93 - Warning: <img> lacks "alt" attribute
line 141 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 141 column 98 - Warning: <img> lacks "alt" attribute
line 148 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 216 - Warning: <img> proprietary attribute value "absmiddle"
line 155 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 155 column 70 - Warning: <img> lacks "alt" attribute
line 156 column 70 - Warning: <table> attribute "width" has invalid value "11.4%"
line 159 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 159 column 70 - Warning: <img> lacks "alt" attribute
line 160 column 70 - Warning: <table> attribute "width" has invalid value "22.8%"
line 163 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 163 column 70 - Warning: <img> lacks "alt" attribute
line 164 column 70 - Warning: <table> attribute "width" has invalid value "56.9%"
line 167 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 167 column 70 - Warning: <img> lacks "alt" attribute
line 168 column 70 - Warning: <table> attribute "width" has invalid value "4.1%"
line 171 column 70 - Warning: <img> proprietary attribute value "absmiddle"
line 171 column 70 - Warning: <img> lacks "alt" attribute
line 172 column 70 - Warning: <table> attribute "width" has invalid value "4.9%"
line 172 column 70 - Warning: <table> attribute "bgcolor" has invalid value "grey"
line 187 column 22 - Warning: <img> lacks "alt" attribute
line 187 column 63 - Warning: <img> lacks "alt" attribute
line 187 column 112 - Warning: <img> lacks "alt" attribute
line 187 column 162 - Warning: <img> lacks "alt" attribute
line 198 column 15 - Warning: <img> lacks "alt" attribute
line 205 column 693 - Warning: <img> lacks "alt" attribute
line 221 column 3248 - Warning: <img> lacks "alt" attribute
line 222 column 3334 - Warning: <img> lacks "alt" attribute
line 223 column 3420 - Warning: <img> lacks "alt" attribute
line 247 column 5727 - Warning: <img> proprietary attribute value "absmiddle"
line 247 column 5727 - Warning: <img> lacks "alt" attribute
line 247 column 5859 - Warning: <img> lacks "alt" attribute
line 247 column 6018 - Warning: <img> lacks "alt" attribute
line 253 column 37 - Warning: <img> lacks "alt" attribute
line 260 column 427 - Warning: <font> attribute "color" had invalid value "888888" and has been replaced
line 266 column 17 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 17 - Warning: <img> lacks "alt" attribute
line 266 column 60 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 60 - Warning: <img> lacks "alt" attribute
line 266 column 103 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 103 - Warning: <img> lacks "alt" attribute
line 266 column 146 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 146 - Warning: <img> lacks "alt" attribute
line 266 column 189 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 189 - Warning: <img> lacks "alt" attribute
line 266 column 232 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 232 - Warning: <img> lacks "alt" attribute
line 266 column 275 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 275 - Warning: <img> lacks "alt" attribute
line 266 column 318 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 318 - Warning: <img> lacks "alt" attribute
line 266 column 361 - Warning: <img> proprietary attribute value "absmiddle"
line 266 column 361 - Warning: <img> lacks "alt" attribute
line 267 column 23 - Warning: <img> lacks "alt" attribute
line 267 column 64 - Warning: <img> lacks "alt" attribute
line 267 column 113 - Warning: <img> lacks "alt" attribute
line 267 column 163 - Warning: <img> lacks "alt" attribute
line 268 column 11 - Warning: <img> lacks "alt" attribute
line 278 column 15 - Warning: <img> lacks "alt" attribute
line 285 column 1515 - Warning: <img> lacks "alt" attribute
line 285 column 1725 - Warning: <img> lacks "alt" attribute
line 285 column 1813 - Warning: <img> lacks "alt" attribute
line 285 column 2057 - Warning: <img> lacks "alt" attribute
line 285 column 2504 - Warning: <img> lacks "alt" attribute
line 285 column 2693 - Warning: <img> lacks "alt" attribute
line 291 column 37 - Warning: <img> lacks "alt" attribute
line 305 column 11 - Warning: <img> lacks "alt" attribute
line 306 column 22 - Warning: <img> lacks "alt" attribute
line 306 column 63 - Warning: <img> lacks "alt" attribute
line 306 column 112 - Warning: <img> lacks "alt" attribute
line 306 column 162 - Warning: <img> lacks "alt" attribute
line 317 column 15 - Warning: <img> lacks "alt" attribute
line 334 column 22 - Warning: <img> lacks "alt" attribute
line 334 column 63 - Warning: <img> lacks "alt" attribute
line 334 column 111 - Warning: <img> lacks "alt" attribute
line 334 column 161 - Warning: <img> lacks "alt" attribute
line 345 column 15 - Warning: <img> lacks "alt" attribute
line 369 column 22 - Warning: <img> lacks "alt" attribute
line 369 column 63 - Warning: <img> lacks "alt" attribute
line 369 column 112 - Warning: <img> lacks "alt" attribute
line 369 column 162 - Warning: <img> lacks "alt" attribute
line 370 column 11 - Warning: <img> lacks "alt" attribute
line 380 column 15 - Warning: <img> lacks "alt" attribute
line 586 column 14 - Warning: <img> proprietary attribute value "absmiddle"
line 586 column 14 - Warning: <img> lacks "alt" attribute
line 586 column 57 - Warning: <img> proprietary attribute value "absmiddle"
line 586 column 57 - Warning: <img> lacks "alt" attribute
line 586 column 100 - Warning: <img> proprietary attribute value "absmiddle"
line 586 column 100 - Warning: <img> lacks "alt" attribute
line 586 column 143 - Warning: <img> proprietary attribute value "absmiddle"
line 586 column 143 - Warning: <img> lacks "alt" attribute
line 587 column 22 - Warning: <img> lacks "alt" attribute
line 587 column 63 - Warning: <img> lacks "alt" attribute
line 587 column 112 - Warning: <img> lacks "alt" attribute
line 587 column 162 - Warning: <img> lacks "alt" attribute
line 588 column 11 - Warning: <img> lacks "alt" attribute
line 598 column 15 - Warning: <img> lacks "alt" attribute
line 613 column 22 - Warning: <img> lacks "alt" attribute
line 613 column 63 - Warning: <img> lacks "alt" attribute
line 613 column 112 - Warning: <img> lacks "alt" attribute
line 613 column 162 - Warning: <img> lacks "alt" attribute
line 614 column 11 - Warning: <img> lacks "alt" attribute
line 624 column 15 - Warning: <img> lacks "alt" attribute
line 640 column 15 - Warning: <img> proprietary attribute value "absmiddle"
line 640 column 15 - Warning: <img> lacks "alt" attribute
line 640 column 58 - Warning: <img> proprietary attribute value "absmiddle"
line 640 column 58 - Warning: <img> lacks "alt" attribute
line 640 column 101 - Warning: <img> proprietary attribute value "absmiddle"
line 640 column 101 - Warning: <img> lacks "alt" attribute
line 640 column 144 - Warning: <img> proprietary attribute value "absmiddle"
line 640 column 144 - Warning: <img> lacks "alt" attribute
line 640 column 187 - Warning: <img> proprietary attribute value "absmiddle"
line 640 column 187 - Warning: <img> lacks "alt" attribute
line 641 column 22 - Warning: <img> lacks "alt" attribute
line 641 column 63 - Warning: <img> lacks "alt" attribute
line 641 column 112 - Warning: <img> lacks "alt" attribute
line 641 column 161 - Warning: <img> lacks "alt" attribute
line 642 column 11 - Warning: <img> lacks "alt" attribute
line 652 column 15 - Warning: <img> lacks "alt" attribute
line 659 column 163 - Warning: <table> attribute "height" has invalid value "350px"
line 665 column 881 - Warning: <img> lacks "alt" attribute
line 665 column 979 - Warning: <img> lacks "alt" attribute
line 673 column 22 - Warning: <img> lacks "alt" attribute
line 673 column 63 - Warning: <img> lacks "alt" attribute
line 673 column 112 - Warning: <img> lacks "alt" attribute
line 673 column 162 - Warning: <img> lacks "alt" attribute
line 684 column 15 - Warning: <img> lacks "alt" attribute
line 691 column 693 - Warning: <img> lacks "alt" attribute
line 744 column 7596 - Warning: <img> proprietary attribute value "absmiddle"
line 744 column 7596 - Warning: <img> lacks "alt" attribute
line 762 column 11491 - Warning: <img> lacks "alt" attribute
line 762 column 11650 - Warning: <img> lacks "alt" attribute
line 768 column 37 - Warning: <img> lacks "alt" attribute
line 782 column 22 - Warning: <img> lacks "alt" attribute
line 782 column 63 - Warning: <img> lacks "alt" attribute
line 782 column 112 - Warning: <img> lacks "alt" attribute
line 782 column 162 - Warning: <img> lacks "alt" attribute
line 783 column 11 - Warning: <img> lacks "alt" attribute
line 793 column 15 - Warning: <img> lacks "alt" attribute
line 818 column 11 - Warning: <img> lacks "alt" attribute
line 819 column 22 - Warning: <img> lacks "alt" attribute
line 819 column 63 - Warning: <img> lacks "alt" attribute
line 819 column 112 - Warning: <img> lacks "alt" attribute
line 819 column 162 - Warning: <img> lacks "alt" attribute
line 820 column 11 - Warning: <img> lacks "alt" attribute
line 830 column 15 - Warning: <img> lacks "alt" attribute
line 847 column 22 - Warning: <img> lacks "alt" attribute
line 847 column 63 - Warning: <img> lacks "alt" attribute
line 847 column 112 - Warning: <img> lacks "alt" attribute
line 847 column 162 - Warning: <img> lacks "alt" attribute
line 858 column 15 - Warning: <img> lacks "alt" attribute
line 865 column 693 - Warning: <img> lacks "alt" attribute
line 871 column 2508 - Warning: <img> lacks "alt" attribute
line 871 column 2667 - Warning: <img> lacks "alt" attribute
line 879 column 22 - Warning: <img> lacks "alt" attribute
line 879 column 63 - Warning: <img> lacks "alt" attribute
line 879 column 111 - Warning: <img> lacks "alt" attribute
line 879 column 161 - Warning: <img> lacks "alt" attribute
line 890 column 15 - Warning: <img> lacks "alt" attribute
line 903 column 938 - Warning: <img> proprietary attribute value "absmiddle"
line 903 column 938 - Warning: <img> lacks "alt" attribute
line 912 column 22 - Warning: <img> lacks "alt" attribute
line 912 column 63 - Warning: <img> lacks "alt" attribute
line 912 column 112 - Warning: <img> lacks "alt" attribute
line 912 column 162 - Warning: <img> lacks "alt" attribute
line 913 column 11 - Warning: <img> escaping malformed URI reference
line 913 column 11 - Warning: <img> lacks "alt" attribute
line 923 column 15 - Warning: <img> lacks "alt" attribute
line 943 column 22 - Warning: <img> lacks "alt" attribute
line 943 column 63 - Warning: <img> lacks "alt" attribute
line 943 column 112 - Warning: <img> lacks "alt" attribute
line 943 column 162 - Warning: <img> lacks "alt" attribute
line 954 column 15 - Warning: <img> lacks "alt" attribute
line 969 column 22 - Warning: <img> lacks "alt" attribute
line 969 column 63 - Warning: <img> lacks "alt" attribute
line 969 column 112 - Warning: <img> lacks "alt" attribute
line 969 column 162 - Warning: <img> lacks "alt" attribute
line 980 column 15 - Warning: <img> lacks "alt" attribute
line 987 column 693 - Warning: <img> lacks "alt" attribute
line 993 column 2520 - Warning: <img> proprietary attribute value "absmiddle"
line 993 column 2520 - Warning: <img> lacks "alt" attribute
line 1003 column 3757 - Warning: <img> lacks "alt" attribute
line 1003 column 3916 - Warning: <img> lacks "alt" attribute
line 1011 column 22 - Warning: <img> lacks "alt" attribute
line 1011 column 63 - Warning: <img> lacks "alt" attribute
line 1011 column 112 - Warning: <img> lacks "alt" attribute
line 1011 column 162 - Warning: <img> lacks "alt" attribute
line 1022 column 15 - Warning: <img> lacks "alt" attribute
line 1045 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 1045 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 1045 column 216 - Warning: <img> proprietary attribute value "absmiddle"
line 1054 column 25 - Warning: <img> lacks "alt" attribute
line 1059 column 267 - Warning: <img> lacks "alt" attribute
line 205 column 1511 - Warning: trimming empty <font>
line 664 column 583 - Warning: trimming empty <p>
line 711 column 4131 - Warning: trimming empty <font>
line 721 column 5773 - Warning: trimming empty <font>
line 726 column 6045 - Warning: trimming empty <font>
line 734 column 6642 - Warning: trimming empty <font>
line 865 column 1511 - Warning: trimming empty <font>
line 987 column 1511 - Warning: trimming empty <font>
line 994 column 2579 - Warning: trimming empty <font>
line 1039 column 17 - Warning: trimming empty <tr>
line 125 column 68 - Warning: <nobr> is not approved by W3C
line 141 column 68 - Warning: <nobr> is not approved by W3C
line 203 column 27 - Warning: <nobr> is not approved by W3C
line 205 column 157 - Warning: <table> proprietary attribute "height"
line 205 column 222 - Warning: <td> proprietary attribute "background"
line 205 column 318 - Warning: <td> proprietary attribute "background"
line 205 column 408 - Warning: <table> proprietary attribute "height"
line 205 column 488 - Warning: <td> proprietary attribute "background"
line 205 column 1443 - Warning: <td> proprietary attribute "background"
line 258 column 47 - Warning: <nobr> is not approved by W3C
line 283 column 27 - Warning: <nobr> is not approved by W3C
line 285 column 1594 - Warning: <td> proprietary attribute "background"
line 285 column 1894 - Warning: <td> proprietary attribute "background"
line 285 column 2147 - Warning: <table> proprietary attribute "height"
line 285 column 2585 - Warning: <td> proprietary attribute "background"
line 296 column 47 - Warning: <nobr> is not approved by W3C
line 322 column 27 - Warning: <nobr> is not approved by W3C
line 350 column 27 - Warning: <nobr> is not approved by W3C
line 385 column 27 - Warning: <nobr> is not approved by W3C
line 603 column 27 - Warning: <nobr> is not approved by W3C
line 629 column 27 - Warning: <nobr> is not approved by W3C
line 657 column 27 - Warning: <nobr> is not approved by W3C
line 659 column 163 - Warning: <table> proprietary attribute "height"
line 689 column 27 - Warning: <nobr> is not approved by W3C
line 691 column 157 - Warning: <table> proprietary attribute "height"
line 691 column 222 - Warning: <td> proprietary attribute "background"
line 691 column 318 - Warning: <td> proprietary attribute "background"
line 691 column 408 - Warning: <table> proprietary attribute "height"
line 691 column 488 - Warning: <td> proprietary attribute "background"
line 691 column 1443 - Warning: <td> proprietary attribute "background"
line 773 column 47 - Warning: <nobr> is not approved by W3C
line 798 column 27 - Warning: <nobr> is not approved by W3C
line 835 column 27 - Warning: <nobr> is not approved by W3C
line 863 column 27 - Warning: <nobr> is not approved by W3C
line 865 column 157 - Warning: <table> proprietary attribute "height"
line 865 column 222 - Warning: <td> proprietary attribute "background"
line 865 column 318 - Warning: <td> proprietary attribute "background"
line 865 column 408 - Warning: <table> proprietary attribute "height"
line 865 column 488 - Warning: <td> proprietary attribute "background"
line 865 column 1443 - Warning: <td> proprietary attribute "background"
line 895 column 27 - Warning: <nobr> is not approved by W3C
line 928 column 27 - Warning: <nobr> is not approved by W3C
line 959 column 27 - Warning: <nobr> is not approved by W3C
line 985 column 27 - Warning: <nobr> is not approved by W3C
line 987 column 157 - Warning: <table> proprietary attribute "height"
line 987 column 222 - Warning: <td> proprietary attribute "background"
line 987 column 318 - Warning: <td> proprietary attribute "background"
line 987 column 408 - Warning: <table> proprietary attribute "height"
line 987 column 488 - Warning: <td> proprietary attribute "background"
line 987 column 1443 - Warning: <td> proprietary attribute "background"
line 1027 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 496 warnings and 4 errors!

URIs must be properly escaped, they must not contain unescaped
characters below U+0021 including the space character and not
above U+007E. Tidy escapes the URI for you as recommended by
HTML 4.01 section B.2.1 and XML 1.0 section 4.2.2. Some user agents
use another algorithm to escape such URIs and some server-sided
scripts depend on that. If you want to depend on that, you must
escape the URI on your own. For more information please refer to
http://www.w3.org/International/O-URL-and-ident.html

The alt attribute should be used to give a short description
of an image; longer descriptions should be given with the
longdesc attribute which takes a URL linked to the description.
These measures are needed for people using non-graphical browsers.

For further advice on how to make your pages accessible
see http://www.w3.org/WAI/GL.
You are recommended to use CSS to specify the font and
properties such as its size and color. This will reduce
the size of HTML files and make them easier to maintain
compared with using <FONT> elements.

You are recommended to use CSS to control line wrapping.
Use "white-space: nowrap" to inhibit wrapping in place
of inserting <NOBR>...</NOBR> into the markup.

About HTML Tidy: https://github.com/htacg/tidy-html5
Bug reports and comments: https://github.com/htacg/tidy-html5/issues
Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/
Latest HTML specification: http://dev.w3.org/html5/spec-author-view/
Validate your HTML documents: http://validator.w3.org/nu/
Lobby your company to join the W3C: http://www.w3.org/Consortium

Do you speak a language other than English, or a different variant of
English? Consider helping us to localize HTML Tidy. For details please see
https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md