<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.cloudmodding.com/oot/App:Libobj/history?feed=atom</id>
		<title>App:Libobj - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.cloudmodding.com/oot/App:Libobj/history?feed=atom"/>
		<link rel="alternate" type="text/html" href="https://wiki.cloudmodding.com/oot/App:Libobj/history"/>
		<updated>2026-04-16T21:18:36Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.cloudmodding.com/woot/index.php?title=App:Libobj&amp;diff=1459&amp;oldid=prev</id>
		<title>CloudMax: CloudMax moved page Libobj to App:Libobj: Moved to proper namespace</title>
		<link rel="alternate" type="text/html" href="https://wiki.cloudmodding.com/woot/index.php?title=App:Libobj&amp;diff=1459&amp;oldid=prev"/>
				<updated>2014-07-07T09:17:09Z</updated>
		
		<summary type="html">&lt;p&gt;CloudMax moved page &lt;a href=&quot;/oot/Libobj&quot; class=&quot;mw-redirect&quot; title=&quot;Libobj&quot;&gt;Libobj&lt;/a&gt; to &lt;a href=&quot;/oot/App:Libobj&quot; title=&quot;App:Libobj&quot;&gt;App:Libobj&lt;/a&gt;: Moved to proper namespace&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 09:17, 7 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>CloudMax</name></author>	</entry>

	<entry>
		<id>https://wiki.cloudmodding.com/woot/index.php?title=App:Libobj&amp;diff=279&amp;oldid=prev</id>
		<title>Mzxrules: 1 revision</title>
		<link rel="alternate" type="text/html" href="https://wiki.cloudmodding.com/woot/index.php?title=App:Libobj&amp;diff=279&amp;oldid=prev"/>
				<updated>2014-06-08T23:22:09Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 23:22, 8 June 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Mzxrules</name></author>	</entry>

	<entry>
		<id>https://wiki.cloudmodding.com/woot/index.php?title=App:Libobj&amp;diff=278&amp;oldid=prev</id>
		<title>Jason777 at 22:56, 13 May 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.cloudmodding.com/woot/index.php?title=App:Libobj&amp;diff=278&amp;oldid=prev"/>
				<updated>2012-05-13T22:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lowercase title}}&lt;br /&gt;
{{lowercase title}}&lt;br /&gt;
{{ infobox software&lt;br /&gt;
| name = libobj&lt;br /&gt;
| author = spinout&lt;br /&gt;
| operating system = Cross platform&lt;br /&gt;
| language = English&lt;br /&gt;
| programming language = C&lt;br /&gt;
| genre = Library&lt;br /&gt;
| license = Open Source&lt;br /&gt;
| website = [https://bitbucket.org/ottehr/libobj/ libobj] on bitbucket.&lt;br /&gt;
}}&lt;br /&gt;
'''libobj''' is a library written by spinout for manipulating wavefront obj data. It can read and write obj files and their material (mtl) files, as well as write output in N64 [[F3DEX2]], and Zelda 64 collision. There is also an experimental viewer bundled with libobj.&lt;br /&gt;
==objn64tool==&lt;br /&gt;
Originally intended as an example of how to use libobj for obj -&amp;gt; F3DEX2, objn64tool has since grown to a complex converter capable of converting obj not only to F3DEX2 but also to Zelda 64 collision, using functions provided by libobj. It also can produce display lists which are &amp;quot;ready&amp;quot; to have animated materials, outputting a C header and source file defining many aspects of the output.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://bitbucket.org/ottehr/libobj/downloads/objn64tool.exe Latest Win32 binary]&lt;br /&gt;
===Using objn64tool===&lt;br /&gt;
Make sure you know how to use a command line. I even took the time to do long options.&amp;lt;br&amp;gt;&lt;br /&gt;
Usage: &amp;lt;tt&amp;gt;objn64tool.exe [options]&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Option&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Long option&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Description&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-h&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--help&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;This help&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-v&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--verbose&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Be verbose&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-N&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--normalize-all&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Normalize all materials (EXPERIMENTAL)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-n MAT&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--normalize=MAT&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Normalize a specific material (EXPERIMENTAL)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-C FILE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--consts=FILE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Write constants to file &amp;lt;tt&amp;gt;FILE&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt; for stdout)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-H FILE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--header=FILE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Write declarations of symbols to &amp;lt;tt&amp;gt;FILE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-i OBJ&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--input=OBJ&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert obj file &amp;lt;tt&amp;gt;OBJ&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-o FILE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--output=FILE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Write to file &amp;lt;tt&amp;gt;FILE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-b ADDR&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--base=ADDR&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set base address to &amp;lt;tt&amp;gt;ADDR&amp;lt;/tt&amp;gt; (ex: &amp;lt;tt&amp;gt;0x06000000&amp;lt;/tt&amp;gt;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-s SCALE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--scale=SCALE&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Multiply verts by &amp;lt;tt&amp;gt;SCALE&amp;lt;/tt&amp;gt; (default &amp;lt;tt&amp;gt;1.0&amp;lt;/tt&amp;gt;)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-a MAT&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--scroll=MAT&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set up material &amp;lt;tt&amp;gt;MAT&amp;lt;/tt&amp;gt; to be scrolled (See note)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-c&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--collision&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Generate collision&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-M OPT&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--organize=OPT&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;See note below&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;-E NAME&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;tt&amp;gt;--collision-exclude=NAME&amp;lt;/tt&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;See note below&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;amp;nbsp; objn64tool.exe -v -C conf.c -b 0x06000000 -s 2.0 -i test.obj -o test.bin&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Converts object &amp;lt;tt&amp;gt;test.obj&amp;lt;/tt&amp;gt; to F3DEX2 binary &amp;lt;tt&amp;gt;test.bin&amp;lt;/tt&amp;gt;, scaling it by &amp;lt;tt&amp;gt;2.0&amp;lt;/tt&amp;gt;, using base address &amp;lt;tt&amp;gt;0x06000000&amp;lt;/tt&amp;gt;, writing a configuration to &amp;lt;tt&amp;gt;conf.c&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
It should be noted that the &amp;lt;tt&amp;gt;-a/--scroll&amp;lt;/tt&amp;gt; option does not make a scrolling texture, but instead, it sets a texture offset to a bank greater than 8 and gives texture information to the file specified by the &amp;lt;tt&amp;gt;-C/--consts&amp;lt;/tt&amp;gt; option. It is intended to use this option in combination with code which sets up banks which play with texture offests - for example, a texture can be made to scroll left-to-right by increasing it's offset by one pixel at a given interval, since the &amp;lt;tt&amp;gt;-a&amp;lt;/tt&amp;gt; option also copies the first row of pixels to an (unused) row of pixels. Again, check out the information the consts file produces when this option is used.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''About -M (--organize) and -E (--collision-exclude) options'''&amp;lt;br&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;-M&amp;lt;/tt&amp;gt; option specifies what collision types are sorted by. Valid values are:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;amp;nbsp; material&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; group&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; smoothinggroup&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; object&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;-E&amp;lt;/tt&amp;gt; option excludes every one of the object's components that can be categorized by the &amp;lt;tt&amp;gt;-M&amp;lt;/tt&amp;gt; option and the &amp;lt;tt&amp;gt;-E&amp;lt;/tt&amp;gt; argument's option. Take the following options in an example set of options:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;amp;nbsp; -M group -E water_group_00&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;-M group&amp;lt;/tt&amp;gt; tells that collision is to be generated and sorted by groups, and the &amp;lt;tt&amp;gt;-E water_group_00&amp;lt;/tt&amp;gt; tells the converter not to generate collision for the group named &amp;lt;tt&amp;gt;water_group_00&amp;lt;/tt&amp;gt;. If the &amp;lt;tt&amp;gt;-E&amp;lt;/tt&amp;gt; option is used without the &amp;lt;tt&amp;gt;-M&amp;lt;/tt&amp;gt; option, the sorting is assumed to be done by material.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A similar function for excluding and sorting graphics mesh is planned&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Jason777</name></author>	</entry>

	</feed>