<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pioneerspacesim.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luomu</id>
	<title>PioneerWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pioneerspacesim.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luomu"/>
	<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/wiki/Special:Contributions/Luomu"/>
	<updated>2026-07-13T21:04:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Building_with_Code::Blocks&amp;diff=2466</id>
		<title>Building with Code::Blocks</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Building_with_Code::Blocks&amp;diff=2466"/>
		<updated>2014-02-23T18:38:29Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are instructions for building Pioneer for '''Windows''' using the '''Code::Blocks''' IDE, with GCC as the compiler.&lt;br /&gt;
&lt;br /&gt;
== Compiler and IDE ==&lt;br /&gt;
&lt;br /&gt;
First, acquire C::B: http://www.codeblocks.org/. Version 13.12 is verified to work.&lt;br /&gt;
&lt;br /&gt;
Then, you will need a compiler toolchain. Install the '''32-bit''' TDM-GCC bundle from: http://tdm-gcc.tdragon.net/. You may add the bin/ directory to your PATH but that is not necessary.&lt;br /&gt;
&lt;br /&gt;
You may use other distributions (http://sourceforge.net/projects/mingwbuilds/, http://mingw-w64.sourceforge.net/) but then you most likely cannot use the prebuilt dependencies package.&lt;br /&gt;
&lt;br /&gt;
In C::B, open Settings-&amp;gt;Compiler..., selected compiler should be GNU GCC compiler. On tab &amp;quot;Toolchain executables&amp;quot; the paths should be:&lt;br /&gt;
&lt;br /&gt;
* Compiler's install directory: C:\TDM-GCC-32 (or wherever you put it)&lt;br /&gt;
* C compiler: mingw32-gcc.exe&lt;br /&gt;
* C++ compiler: mingw32-g++.exe&lt;br /&gt;
* Linker for dynamic libs: mingw32-g++.exe&lt;br /&gt;
* Linker for static libs: ar.exe&lt;br /&gt;
* Resource compiler: windres.exe&lt;br /&gt;
* Make program: mingw32-make.exe&lt;br /&gt;
&lt;br /&gt;
Also, in Settings-&amp;gt;Debugger you can set the path to C:\TDM-GCC-32\bin\gdb.exe for debugging to work.&lt;br /&gt;
&lt;br /&gt;
== Premake4 ==&lt;br /&gt;
&lt;br /&gt;
[http://industriousone.com/premake Premake4] is used to generate the C::B project file. The latest release 4.3 might work, but here is a more recent executable built from the premake-stable branch:&lt;br /&gt;
&lt;br /&gt;
https://dl.dropboxusercontent.com/u/95790686/premake4.zip&lt;br /&gt;
&lt;br /&gt;
TODO: put this in pioneer-thirdparty repository&lt;br /&gt;
&lt;br /&gt;
== Third-party dependencies package ==&lt;br /&gt;
&lt;br /&gt;
If you use TDM-GCC32 to compile, you can use this package with prebuilt dependencies (SDL, Assimp, libPNG etc.). Otherwise you have to gather your own dependencies.&lt;br /&gt;
&lt;br /&gt;
https://dl.dropboxusercontent.com/u/95790686/pioneer-cb-deps.7z&lt;br /&gt;
&lt;br /&gt;
Extract it to your preferred location, and copy the .dll files to the Pioneer directory.&lt;br /&gt;
&lt;br /&gt;
TODO: put this in pioneer-thirdparty repository&lt;br /&gt;
&lt;br /&gt;
== Building the game ==&lt;br /&gt;
&lt;br /&gt;
Open command prompt and go to pioneer/win32/codeblocks. Generate the project file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
premake4.exe --thirdparty=D:/Dev/mingw32 codeblocks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Substitute the correct location for the third-party deps root folder, using forward slashes. Using --thirdparty is optional if you set the correct include and lib paths in C::B settings.&lt;br /&gt;
&lt;br /&gt;
Pioneer.cbp is generated in the build/ subdirectory, open it in C::B and build the pioneer subproject. The executables are placed in the pioneer root directory. Copy the .dlls from the third-party dependencies before running for the first time.&lt;br /&gt;
&lt;br /&gt;
You need to regenerate the project every time a source file is added or removed. The generated project will not be committed to the repository.&lt;br /&gt;
&lt;br /&gt;
== Extra options for the premake script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--thirdparty=[location], Folder where the third-party deps are extracted&lt;br /&gt;
--noconsole, Don't open a console window when running the game.&lt;br /&gt;
--release-symbols, Include debug symbols in release build. Makes debugging possible, results in a larger executable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
* Plenty of warnings from contrib header files.&lt;br /&gt;
* Starting the build for the entire workspace does not give the correct build order. Launch the build for the pioneer subproject instead.&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Building_with_Code::Blocks&amp;diff=2465</id>
		<title>Building with Code::Blocks</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Building_with_Code::Blocks&amp;diff=2465"/>
		<updated>2014-02-23T16:52:20Z</updated>

		<summary type="html">&lt;p&gt;Luomu: Created page with &amp;quot;These are instructions for building Pioneer for '''Windows''' using the '''Code::Blocks''' IDE, with GCC as the compiler.  First, acquire C::B: http://www.codeblocks.org/. Ver...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are instructions for building Pioneer for '''Windows''' using the '''Code::Blocks''' IDE, with GCC as the compiler.&lt;br /&gt;
&lt;br /&gt;
First, acquire C::B: http://www.codeblocks.org/. Version 13.12 is verified to work.&lt;br /&gt;
&lt;br /&gt;
Then, you will need a compiler toolchain. Install the '''32-bit''' TDM-GCC bundle from: http://tdm-gcc.tdragon.net/. You may add the bin/ directory to your PATH but that is not necessary.&lt;br /&gt;
&lt;br /&gt;
You may use other distributions (http://sourceforge.net/projects/mingwbuilds/, http://mingw-w64.sourceforge.net/) but then you most likely cannot use the prebuilt dependencies package.&lt;br /&gt;
&lt;br /&gt;
In C::B, open Settings-&amp;gt;Compiler..., selected compiler should be GNU GCC compiler. On tab &amp;quot;Toolchain executables&amp;quot; the paths should be:&lt;br /&gt;
&lt;br /&gt;
* Compiler's install directory: C:\TDM-GCC-32 (or wherever you put it)&lt;br /&gt;
* C compiler: mingw32-gcc.exe&lt;br /&gt;
* C++ compiler: mingw32-g++.exe&lt;br /&gt;
* Linker for dynamic libs: mingw32-g++.exe&lt;br /&gt;
* Linker for static libs: ar.exe&lt;br /&gt;
* Resource compiler: windres.exe&lt;br /&gt;
* Make program: mingw32-make.exe&lt;br /&gt;
&lt;br /&gt;
Also, in Settings-&amp;gt;Debugger you can set the path to C:\TDM-GCC-32\bin\gdb.exe for debugging to work.&lt;br /&gt;
&lt;br /&gt;
[http://industriousone.com/premake Premake4] is used to generate the C::B project file. Link here.&lt;br /&gt;
&lt;br /&gt;
Third-party dependencies package.&lt;br /&gt;
&lt;br /&gt;
Open command prompt and go to pioneer/win32/codeblocks. Generate the project file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
premake4.exe --thirdparty=D:/Dev/mingw32 codeblocks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Substitute the correct location for the third-party deps root folder, using forward slashes. Using --thirdparty is optional if you set the correct include and lib paths in C::B settings.&lt;br /&gt;
&lt;br /&gt;
Pioneer.cbp is generated in the build/ subdirectory, open it in C::B and build the pioneer subproject. The executables are placed in the pioneer root directory. Copy the .dlls from the third-party dependencies before running for the first time.&lt;br /&gt;
&lt;br /&gt;
== Extra options for the premake script ==&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
* Plenty of warnings from contrib header files.&lt;br /&gt;
* Starting the build for the entire workspace does not give the correct build order. Launch the build for the pioneer subproject instead.&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Pioneer_Wiki&amp;diff=1926</id>
		<title>Pioneer Wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Pioneer_Wiki&amp;diff=1926"/>
		<updated>2013-10-17T13:10:20Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Content Creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pioneer is a space adventure game set in the milkyway galaxy at the turn of the 31st century. The game is open-ended, and you are free to explore the millions of star systems in the game. You can land on planets, slingshot past gas giants, and burn yourself to a crisp flying between binary star systems.&lt;br /&gt;
&lt;br /&gt;
If you are new to pioneer you may want to know [[How to start| how to start]].&lt;br /&gt;
&lt;br /&gt;
* [http://pioneerspacesim.net/download Download Pioneer] for Windows, Linux and Mac OSX&lt;br /&gt;
&lt;br /&gt;
Please make this wiki nice. Add stuff about mods, dev, whatever. Be awesome! [[Getting started|How to get started]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{|width=100%&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#bbffbb; border:2px solid #99ee99;  padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
===Community===&lt;br /&gt;
* [http://pioneerspacesim.net/ Pioneer Space Sim Homepage]&lt;br /&gt;
* [http://pioneerspacesim.net/forum Forums]&lt;br /&gt;
* [http://webchat.freenode.net/?channels=#pioneer Pioneer Space Sim on IRC]&lt;br /&gt;
* [http://pioneerspacesim.net/+ Pioneer Space Sim] on Google+&lt;br /&gt;
* [http://twitter.com/pioneerspacesim @pioneerspacesim] on Twitter&lt;br /&gt;
----&lt;br /&gt;
* [[Tutorials]](Outdated and WIP)&lt;br /&gt;
* [[Keyboard and mouse controls]]&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
* [[Media Coverage]]&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#fff9b1; border:2px solid #f0fe66;  padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
===The Pioneer universe===&lt;br /&gt;
* [[Story]]&lt;br /&gt;
* [http://pioneerwiki.com/wiki/Category:Ships Ships] (work in progress)&lt;br /&gt;
* [http://pioneerwiki.com/wiki/Category:Manufacturers Manufacturers] (work in progress)&lt;br /&gt;
* [[Places of interest]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|width=100%&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#f0f0ff; border:2px solid #c6c9ff; padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Content Creation===&lt;br /&gt;
* [[Mods]]&lt;br /&gt;
* [[Introduction to Mission Scripting]]&lt;br /&gt;
** [[Interacting with the game: Event-based programming]]&lt;br /&gt;
** [[Interacting with the player: BBS forms]]&lt;br /&gt;
** [[Lua-based equipment]] (NOT YET MERGED!)&lt;br /&gt;
** [[Surviving a reload]]&lt;br /&gt;
* [http://eatenbyagrue.org/f/pioneer/codedoc/ Lua API Reference]&lt;br /&gt;
* Ships and stations&lt;br /&gt;
** [[Making your first ship]]&lt;br /&gt;
** [[Creating Ships and Stations]]&lt;br /&gt;
* Models&lt;br /&gt;
** [[Model system]]&lt;br /&gt;
** [[Model viewer]]&lt;br /&gt;
** [[Transitioning to the new model system]]&lt;br /&gt;
** [[Model QA Checklist]]&lt;br /&gt;
** Making models&lt;br /&gt;
*** [[Textures]]&lt;br /&gt;
*** [[Transparency]]&lt;br /&gt;
*** [[Optimising geometry]]&lt;br /&gt;
*** [[Modelling stations]]&lt;br /&gt;
** [[3DS Max]]&lt;br /&gt;
** [[:Category:Blender|Blender]]&lt;br /&gt;
*** [[Blender Tips]]&lt;br /&gt;
*** [[UV coordinates in Blender]]&lt;br /&gt;
*** [[Asteroids and rocks in Blender]]&lt;br /&gt;
*** [[Scripting Blender]]&lt;br /&gt;
** [[:Category:GIMP|GIMP]]&lt;br /&gt;
*** [[GIMP Tips]]&lt;br /&gt;
*** [[Cutaway panels in GIMP]]&lt;br /&gt;
* [[Music]]&lt;br /&gt;
* [[Sound Effects]]&lt;br /&gt;
* [[Translations]]&lt;br /&gt;
* [[Licensing]]&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;33%&amp;quot; style=&amp;quot;background:#fff3e3; border:2px solid #ffc9c9; padding:2px 2px 4px 4px; vertical-align: top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Development===&lt;br /&gt;
* [[Design Scope|Game Scope]]&lt;br /&gt;
* [[Getting Started with Development]]&lt;br /&gt;
** [[How to communicate]]&lt;br /&gt;
** [[Using git and GitHub]] (work in progress)&lt;br /&gt;
** [[Core Team]]&lt;br /&gt;
* [[Development Model]]&lt;br /&gt;
* [[Design_Workflow|Design and Project Management Workflow]]&lt;br /&gt;
* [https://github.com/pioneerspacesim/pioneer/issues Issue tracker]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pioneer is brung to you by a flock of [https://github.com/pioneerspacesim/pioneer/blob/master/AUTHORS.txt opensource beardy-weirdies], and is [http://www.gnu.org/licenses/gpl.html Free Software]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_QA_Checklist&amp;diff=1925</id>
		<title>Model QA Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_QA_Checklist&amp;diff=1925"/>
		<updated>2013-10-17T13:09:26Z</updated>

		<summary type="html">&lt;p&gt;Luomu: Created page with &amp;quot;== Are the source files available? ==  They should be put to the asset repository.  == Does the model have detail levels? ==  LODs should be included in every model. The numbe...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Are the source files available? ==&lt;br /&gt;
&lt;br /&gt;
They should be put to the asset repository.&lt;br /&gt;
&lt;br /&gt;
== Does the model have detail levels? ==&lt;br /&gt;
&lt;br /&gt;
LODs should be included in every model. The number depends on the case. For ships 2-3, for stations and buildings 3-4.&lt;br /&gt;
&lt;br /&gt;
== Does the model have a proper collision mesh? ==&lt;br /&gt;
&lt;br /&gt;
All models must have a collision mesh, and it should be very low detail (&amp;lt;100 triangles).&lt;br /&gt;
&lt;br /&gt;
== Does the model have a large number of geometry nodes? ==&lt;br /&gt;
&lt;br /&gt;
One geometry node equals one drawcall. All static geometry should be combined into one node (or one per material).&lt;br /&gt;
&lt;br /&gt;
Some day the importer may provide optimization options, but until it does modelers must merge geometry before exporting.&lt;br /&gt;
&lt;br /&gt;
== Does the model have many materials? ==&lt;br /&gt;
&lt;br /&gt;
Geometries with different materials will be drawn separately. Identical materials should be merged together.&lt;br /&gt;
&lt;br /&gt;
== Does an animation have a large number of keyframes? ==&lt;br /&gt;
&lt;br /&gt;
Some exporters have the option to resample the timeline, creating new keyframes at set intervals. If almost every frame is a keyframe, the file size will increase quickly.&lt;br /&gt;
&lt;br /&gt;
== Does the model have large secondary texture maps (glow, specular, patterns) ==&lt;br /&gt;
&lt;br /&gt;
Glowmaps usually don't have much detail, so they should be half or quarter size of the main texture. Patterns should never be very large.&lt;br /&gt;
&lt;br /&gt;
== Do .png textures include an unnecessary alpha channel? ==&lt;br /&gt;
&lt;br /&gt;
Opaque textures don't need to be 32-bit. With Photoshop this mistake is easy to make, so flatten the image before saving.&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1392</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1392"/>
		<updated>2013-06-30T19:28:09Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== First milestone ==&lt;br /&gt;
&lt;br /&gt;
Basically we want external interfaces to be stable.&lt;br /&gt;
&lt;br /&gt;
* New save file format&lt;br /&gt;
* Separate Player from Ship (breaks Lua)&lt;br /&gt;
* Turn Missiles into guided Projectiles&lt;br /&gt;
* Lua equipment&lt;br /&gt;
* Module manifest&lt;br /&gt;
* Convert to new UI (but not redesigned HUD)&lt;br /&gt;
* JSON data files (ship defs)&lt;br /&gt;
* Starsystem generation rewrite (plus custom systems)&lt;br /&gt;
&lt;br /&gt;
== Second milestone ==&lt;br /&gt;
&lt;br /&gt;
Gameplay stuff, redesigned UI. Dunno yet.&lt;br /&gt;
&lt;br /&gt;
== Older stuff ==&lt;br /&gt;
&lt;br /&gt;
Pioneer version 1.0 will be the first &amp;quot;stable&amp;quot; release. This will not be the final state of the game: development will continue, particularly adding a lot more content and game-play features, but features present in version 1.0 are expected to be supported for a long time.&lt;br /&gt;
&lt;br /&gt;
Things that must be done before we can release version 1.0:&lt;br /&gt;
&lt;br /&gt;
'''''Warning:''' This list is incomplete - and under active discussion so subject to change''&lt;br /&gt;
=== Technical features ===&lt;br /&gt;
* The save system will be changed to allow future versions to be made without breaking all prior saved games.&lt;br /&gt;
* Equipment control will be moved to Lua.&lt;br /&gt;
* All user-interface will be converted to use the new-ui system and be driven by Lua.&lt;br /&gt;
* Star system generation will be rewritten to allow partially custom systems, and to allow some types of changes to be made without having knock-on effects through the entire galaxy or system.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay features ===&lt;br /&gt;
* Military progression / treason.&lt;br /&gt;
* Something like the Scout missions the walterar has done, exploration jobs.&lt;br /&gt;
* No hypersace from in atmosphere / or too close to a planet surface.&lt;br /&gt;
* In-system hyperspace jumps to make assassination missions and piracy actually possible.&lt;br /&gt;
* Alternatively a Fast-As-Light drive, Shadmar has taken a hacked one I (fluffyfreak) wrote and updated it for Paragon.&lt;br /&gt;
&lt;br /&gt;
=== More proposed stuff ===&lt;br /&gt;
&lt;br /&gt;
From [[User:Luomu|Luomu]] ([[User talk:Luomu|talk]]) 17:09, 1 May 2013 (PDT)&lt;br /&gt;
&lt;br /&gt;
* New, fault tolerant save system: this is the most important thing ever&lt;br /&gt;
* Rewrite the HUD&lt;br /&gt;
** Gather a list of components before doing any visual design&lt;br /&gt;
* Controls&lt;br /&gt;
** New input system: do we need one, or can the current one be fixed?&lt;br /&gt;
** Current problems: conflicting binds, cannot bind multiple inputs per action&lt;br /&gt;
** Remove rarely used buttons?&lt;br /&gt;
* Camera&lt;br /&gt;
** Add chase camera, padlock&lt;br /&gt;
* Weapons&lt;br /&gt;
** goals: allow more than just laser bolts (beams, missiles), auto-tracking guns and turrets&lt;br /&gt;
** rewrite, basically&lt;br /&gt;
** turn missiles into guided projectiles instead of ships&lt;br /&gt;
** conflicts with lua trade goods/equipment?&lt;br /&gt;
* Star views and navigation&lt;br /&gt;
** combine system (orbit) view into star map&lt;br /&gt;
** maybe other streamlining as well?&lt;br /&gt;
** bookmarks, travel log&lt;br /&gt;
* Missions and station interface&lt;br /&gt;
** Redesign the bulletin board to allow filtering and searching (e.g., adverts have tags, as shown in this old mock-up: http://i.imgur.com/HJH9L.png)&lt;br /&gt;
** Centralise bulletin board within the station interface (ie, everything else hangs off the bulletin board; the BB is basically the station-wide-web)&lt;br /&gt;
** Replace the &amp;quot;standard&amp;quot; commodity market with multiple traders/shops advertising on the BB&lt;br /&gt;
** Replace the &amp;quot;standard&amp;quot; ship equipment and servicing screens with mechanics advertising on the BB&lt;br /&gt;
** Replace the &amp;quot;standard&amp;quot; ship purchase screen with specialist shops advertising on the BB, plus also individual pilots posting ship-for-sale and ship-wanted adverts&lt;br /&gt;
** Allow player to buy some types of ship equipment as cargo and have it fitted elsewhere&lt;br /&gt;
* Separate Player from Ships&lt;br /&gt;
** to enable shuttlecraft and remote drones&lt;br /&gt;
** must be done during alpha, not sensible afterwards (breaks modules)&lt;br /&gt;
* Hitpoints: use generic HP value instead of mass&lt;br /&gt;
* Cargo: use kg instead of tons&lt;br /&gt;
* AI&lt;br /&gt;
** needs more higher level stuff like basic self preservation, modules must not have to implement their own (like tradeships...)&lt;br /&gt;
** formations, anyone?&lt;br /&gt;
* Ship visual customization&lt;br /&gt;
* Space stations&lt;br /&gt;
** external docking&lt;br /&gt;
** traffic rules (don't allow modules to let ships idle forever)&lt;br /&gt;
* JSON for data files (ship defs etc)&lt;br /&gt;
* Ship to ship docking&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1375</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1375"/>
		<updated>2013-06-13T13:13:36Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* More proposed stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Version 1.0 ==&lt;br /&gt;
&lt;br /&gt;
Pioneer version 1.0 will be the first &amp;quot;stable&amp;quot; release. This will not be the final state of the game: development will continue, particularly adding a lot more content and game-play features, but features present in version 1.0 are expected to be supported for a long time.&lt;br /&gt;
&lt;br /&gt;
Things that must be done before we can release version 1.0:&lt;br /&gt;
&lt;br /&gt;
'''''Warning:''' This list is incomplete - and under active discussion so subject to change''&lt;br /&gt;
=== Technical features ===&lt;br /&gt;
* The save system will be changed to allow future versions to be made without breaking all prior saved games.&lt;br /&gt;
* Equipment control will be moved to Lua.&lt;br /&gt;
* All user-interface will be converted to use the new-ui system and be driven by Lua.&lt;br /&gt;
* Star system generation will be rewritten to allow partially custom systems, and to allow some types of changes to be made without having knock-on effects through the entire galaxy or system.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay features ===&lt;br /&gt;
* Military progression / treason.&lt;br /&gt;
* Something like the Scout missions the walterar has done, exploration jobs.&lt;br /&gt;
* No hypersace from in atmosphere / or too close to a planet surface.&lt;br /&gt;
* In-system hyperspace jumps to make assassination missions and piracy actually possible.&lt;br /&gt;
* Alternatively a Fast-As-Light drive, Shadmar has taken a hacked one I (fluffyfreak) wrote and updated it for Paragon.&lt;br /&gt;
&lt;br /&gt;
=== More proposed stuff ===&lt;br /&gt;
&lt;br /&gt;
From [[User:Luomu|Luomu]] ([[User talk:Luomu|talk]]) 17:09, 1 May 2013 (PDT)&lt;br /&gt;
&lt;br /&gt;
* New, fault tolerant save system: this is the most important thing ever&lt;br /&gt;
* Rewrite the HUD&lt;br /&gt;
** Gather a list of components before doing any visual design&lt;br /&gt;
* Controls&lt;br /&gt;
** New input system: do we need one, or can the current one be fixed?&lt;br /&gt;
** Current problems: conflicting binds, cannot bind multiple inputs per action&lt;br /&gt;
** Remove rarely used buttons?&lt;br /&gt;
* Camera&lt;br /&gt;
** Add chase camera, padlock&lt;br /&gt;
* Weapons&lt;br /&gt;
** goals: allow more than just laser bolts (beams, missiles), auto-tracking guns and turrets&lt;br /&gt;
** rewrite, basically&lt;br /&gt;
** turn missiles into guided projectiles instead of ships&lt;br /&gt;
** conflicts with lua trade goods/equipment?&lt;br /&gt;
* Star views and navigation&lt;br /&gt;
** combine system (orbit) view into star map&lt;br /&gt;
** maybe other streamlining as well?&lt;br /&gt;
** bookmarks, travel log&lt;br /&gt;
* Separate Player from Ships&lt;br /&gt;
** to enable shuttlecraft and remote drones&lt;br /&gt;
** must be done during alpha, not sensible afterwards (breaks modules)&lt;br /&gt;
* Hitpoints: use generic HP value instead of mass&lt;br /&gt;
* Cargo: use kg instead of tons&lt;br /&gt;
* AI&lt;br /&gt;
** needs more higher level stuff like basic self preservation, modules must not have to implement their own (like tradeships...)&lt;br /&gt;
** formations, anyone?&lt;br /&gt;
* Ship visual customization&lt;br /&gt;
* Space stations&lt;br /&gt;
** external docking&lt;br /&gt;
** traffic rules (don't allow modules to let ships idle forever)&lt;br /&gt;
* JSON for data files (ship defs etc)&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1373</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1373"/>
		<updated>2013-06-11T17:58:52Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* More proposed stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Version 1.0 ==&lt;br /&gt;
&lt;br /&gt;
Pioneer version 1.0 will be the first &amp;quot;stable&amp;quot; release. This will not be the final state of the game: development will continue, particularly adding a lot more content and game-play features, but features present in version 1.0 are expected to be supported for a long time.&lt;br /&gt;
&lt;br /&gt;
Things that must be done before we can release version 1.0:&lt;br /&gt;
&lt;br /&gt;
'''''Warning:''' This list is incomplete - and under active discussion so subject to change''&lt;br /&gt;
=== Technical features ===&lt;br /&gt;
* The save system will be changed to allow future versions to be made without breaking all prior saved games.&lt;br /&gt;
* Equipment control will be moved to Lua.&lt;br /&gt;
* All user-interface will be converted to use the new-ui system and be driven by Lua.&lt;br /&gt;
* Star system generation will be rewritten to allow partially custom systems, and to allow some types of changes to be made without having knock-on effects through the entire galaxy or system.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay features ===&lt;br /&gt;
* Military progression / treason.&lt;br /&gt;
* Something like the Scout missions the walterar has done, exploration jobs.&lt;br /&gt;
* No hypersace from in atmosphere / or too close to a planet surface.&lt;br /&gt;
* In-system hyperspace jumps to make assassination missions and piracy actually possible.&lt;br /&gt;
* Alternatively a Fast-As-Light drive, Shadmar has taken a hacked one I (fluffyfreak) wrote and updated it for Paragon.&lt;br /&gt;
&lt;br /&gt;
=== More proposed stuff ===&lt;br /&gt;
&lt;br /&gt;
From [[User:Luomu|Luomu]] ([[User talk:Luomu|talk]]) 17:09, 1 May 2013 (PDT)&lt;br /&gt;
&lt;br /&gt;
* New, fault tolerant save system: this is the most important thing ever&lt;br /&gt;
* Rewrite the HUD&lt;br /&gt;
** Gather a list of components before doing any visual design&lt;br /&gt;
* Controls&lt;br /&gt;
** New input system: do we need one, or can the current one be fixed?&lt;br /&gt;
** Current problems: conflicting binds, cannot bind multiple inputs per action&lt;br /&gt;
** Remove rarely used buttons?&lt;br /&gt;
* Camera&lt;br /&gt;
** Add chase camera, padlock&lt;br /&gt;
* Weapons&lt;br /&gt;
** goals: allow more than just laser bolts (beams, missiles), auto-tracking guns and turrets&lt;br /&gt;
** rewrite, basically&lt;br /&gt;
** turn missiles into guided projectiles instead of ships&lt;br /&gt;
** conflicts with lua trade goods/equipment?&lt;br /&gt;
* Star views and navigation&lt;br /&gt;
** combine system (orbit) view into star map&lt;br /&gt;
** maybe other streamlining as well?&lt;br /&gt;
** bookmarks, travel log&lt;br /&gt;
* Separate Player from Ships&lt;br /&gt;
** to enable shuttlecraft and remote drones&lt;br /&gt;
** must be done during alpha, not sensible afterwards (breaks modules)&lt;br /&gt;
* Hitpoints: use generic HP value instead of mass&lt;br /&gt;
* Cargo: use kg instead of tons&lt;br /&gt;
* AI&lt;br /&gt;
** needs more higher level stuff like basic self preservation, modules must not have to implement their own (like tradeships...)&lt;br /&gt;
** formations, anyone?&lt;br /&gt;
* Ship visual customization&lt;br /&gt;
* Space stations&lt;br /&gt;
** external docking&lt;br /&gt;
** traffic rules (don't allow modules to let ships idle forever)&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1372</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1372"/>
		<updated>2013-06-11T17:58:21Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* More proposed stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Version 1.0 ==&lt;br /&gt;
&lt;br /&gt;
Pioneer version 1.0 will be the first &amp;quot;stable&amp;quot; release. This will not be the final state of the game: development will continue, particularly adding a lot more content and game-play features, but features present in version 1.0 are expected to be supported for a long time.&lt;br /&gt;
&lt;br /&gt;
Things that must be done before we can release version 1.0:&lt;br /&gt;
&lt;br /&gt;
'''''Warning:''' This list is incomplete - and under active discussion so subject to change''&lt;br /&gt;
=== Technical features ===&lt;br /&gt;
* The save system will be changed to allow future versions to be made without breaking all prior saved games.&lt;br /&gt;
* Equipment control will be moved to Lua.&lt;br /&gt;
* All user-interface will be converted to use the new-ui system and be driven by Lua.&lt;br /&gt;
* Star system generation will be rewritten to allow partially custom systems, and to allow some types of changes to be made without having knock-on effects through the entire galaxy or system.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay features ===&lt;br /&gt;
* Military progression / treason.&lt;br /&gt;
* Something like the Scout missions the walterar has done, exploration jobs.&lt;br /&gt;
* No hypersace from in atmosphere / or too close to a planet surface.&lt;br /&gt;
* In-system hyperspace jumps to make assassination missions and piracy actually possible.&lt;br /&gt;
* Alternatively a Fast-As-Light drive, Shadmar has taken a hacked one I (fluffyfreak) wrote and updated it for Paragon.&lt;br /&gt;
&lt;br /&gt;
=== More proposed stuff ===&lt;br /&gt;
&lt;br /&gt;
From [[User:Luomu|Luomu]] ([[User talk:Luomu|talk]]) 17:09, 1 May 2013 (PDT)&lt;br /&gt;
&lt;br /&gt;
* New, fault tolerant save system: this is the most important thing ever&lt;br /&gt;
* Rewrite the HUD&lt;br /&gt;
** Gather a list of components before doing any visual design&lt;br /&gt;
* Controls&lt;br /&gt;
** New input system: do we need one, or can the current one be fixed?&lt;br /&gt;
** Current problems: conflicting binds, cannot bind multiple inputs per action&lt;br /&gt;
** Remove rarely used buttons?&lt;br /&gt;
* Camera&lt;br /&gt;
** Add chase camera, padlock&lt;br /&gt;
* Weapons&lt;br /&gt;
** goals: allow more than just laser bolts (beams, missiles), auto-tracking guns and turrets&lt;br /&gt;
** rewrite, basically&lt;br /&gt;
** turn missiles into guided projectiles instead of ships&lt;br /&gt;
** conflicts with lua trade goods/equipment?&lt;br /&gt;
* Star views and navigation&lt;br /&gt;
** combine system (orbit) view into star map&lt;br /&gt;
** maybe other streamlining as well?&lt;br /&gt;
** bookmarks, travel log&lt;br /&gt;
* Separate Player from Ships&lt;br /&gt;
** to enable shuttlecraft and remote drones&lt;br /&gt;
** must be done during alpha, not sensible afterwards (breaks modules)&lt;br /&gt;
* Hitpoints: use generic HP value instead of mass&lt;br /&gt;
* Cargo: use lg instead of tons (volume doesn't matter)&lt;br /&gt;
* AI&lt;br /&gt;
** needs more higher level stuff like basic self preservation, modules must not have to implement their own (like tradeships...)&lt;br /&gt;
** formations, anyone?&lt;br /&gt;
* Ship visual customization&lt;br /&gt;
* Space stations&lt;br /&gt;
** external docking&lt;br /&gt;
** traffic rules (don't allow modules to let ships idle forever)&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=1362</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=1362"/>
		<updated>2013-05-28T00:38:21Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Billboard lights */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae).'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
* Versions downloaded from blender.org support Collada out of the box, while the version distributed with some Linux distros doesn't&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name. If in doubt, note that both .obj and .dae files are human readable, and you can find the assigned names in them with a text editor.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 128. Default 100.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||This material will use the pattern/colour system. Read more below.&lt;br /&gt;
|-&lt;br /&gt;
| unlit||No lighting, diffuse value can still be used to tint the result&lt;br /&gt;
|-&lt;br /&gt;
| two_sided||Self-explanatory, however normals on the other side are not automatically inversed (no good way to do this) so the usefulness is limited&lt;br /&gt;
|-&lt;br /&gt;
| alpha_test||Pixels with alpha value &amp;lt; 0.5 are discarded, this is good for fences and such. It produces sharp edges but the geometry does not need to be sorted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate radius of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes.&lt;br /&gt;
&lt;br /&gt;
For more control, name objects with the prefix &amp;quot;collision_&amp;quot; and they will be added to form a collision mesh (these objects will not be visible geometry, and the bounding box will not be generated).&lt;br /&gt;
&lt;br /&gt;
Note, these names are reserved for station collision trigger surfaces:&lt;br /&gt;
&lt;br /&gt;
* collision_pad1&lt;br /&gt;
* collision_pad2&lt;br /&gt;
* collision_pad3&lt;br /&gt;
* collision_pad4&lt;br /&gt;
&lt;br /&gt;
You can also import a separate mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
The collision meshis separate from all detail levels, so it should be only defined once.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
Note, these special nodes are only imported from the most detailed LOD, there is no need to duplicate them. They are rendered outside the detail level system.&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). This feature will be more customizable someday, but for now the following name prefixes are recognized:&lt;br /&gt;
&lt;br /&gt;
* navlight_red: blinking red light, with ships when landing gear is down, with stations constantly&lt;br /&gt;
* navlight_green: blinking green light when landing gear is down&lt;br /&gt;
any other navlight_ is blue, on when landing gear is down.&lt;br /&gt;
* space stations, navlight_pad&amp;lt;number&amp;gt; lights change according to landing pad reservation status&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=1361</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=1361"/>
		<updated>2013-05-28T00:31:14Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Minor features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae).'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
* Versions downloaded from blender.org support Collada out of the box, while the version distributed with some Linux distros doesn't&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name. If in doubt, note that both .obj and .dae files are human readable, and you can find the assigned names in them with a text editor.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 128. Default 100.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||This material will use the pattern/colour system. Read more below.&lt;br /&gt;
|-&lt;br /&gt;
| unlit||No lighting, diffuse value can still be used to tint the result&lt;br /&gt;
|-&lt;br /&gt;
| two_sided||Self-explanatory, however normals on the other side are not automatically inversed (no good way to do this) so the usefulness is limited&lt;br /&gt;
|-&lt;br /&gt;
| alpha_test||Pixels with alpha value &amp;lt; 0.5 are discarded, this is good for fences and such. It produces sharp edges but the geometry does not need to be sorted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate radius of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes.&lt;br /&gt;
&lt;br /&gt;
For more control, name objects with the prefix &amp;quot;collision_&amp;quot; and they will be added to form a collision mesh (these objects will not be visible geometry, and the bounding box will not be generated).&lt;br /&gt;
&lt;br /&gt;
Note, these names are reserved for station collision trigger surfaces:&lt;br /&gt;
&lt;br /&gt;
* collision_pad1&lt;br /&gt;
* collision_pad2&lt;br /&gt;
* collision_pad3&lt;br /&gt;
* collision_pad4&lt;br /&gt;
&lt;br /&gt;
You can also import a separate mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
The collision meshis separate from all detail levels, so it should be only defined once.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
Note, these special nodes are only imported from the most detailed LOD, there is no need to duplicate them. They are rendered outside the detail level system.&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=1360</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=1360"/>
		<updated>2013-05-11T17:35:18Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Detail levels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae).'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
* Versions downloaded from blender.org support Collada out of the box, while the version distributed with some Linux distros doesn't&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name. If in doubt, note that both .obj and .dae files are human readable, and you can find the assigned names in them with a text editor.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 128. Default 100.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||This material will use the pattern/colour system. Read more below.&lt;br /&gt;
|-&lt;br /&gt;
| unlit||No lighting, diffuse value can still be used to tint the result&lt;br /&gt;
|-&lt;br /&gt;
| two_sided||Self-explanatory, however normals on the other side are not automatically inversed (no good way to do this) so the usefulness is limited&lt;br /&gt;
|-&lt;br /&gt;
| alpha_test||Pixels with alpha value &amp;lt; 0.5 are discarded, this is good for fences and such. It produces sharp edges but the geometry does not need to be sorted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate radius of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes.&lt;br /&gt;
&lt;br /&gt;
For more control, name objects with the prefix &amp;quot;collision_&amp;quot; and they will be added to form a collision mesh (these objects will not be visible geometry, and the bounding box will not be generated).&lt;br /&gt;
&lt;br /&gt;
Note, these names are reserved for station collision trigger surfaces:&lt;br /&gt;
&lt;br /&gt;
* collision_pad1&lt;br /&gt;
* collision_pad2&lt;br /&gt;
* collision_pad3&lt;br /&gt;
* collision_pad4&lt;br /&gt;
&lt;br /&gt;
You can also import a separate mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
The collision meshis separate from all detail levels, so it should be only defined once.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1359</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1359"/>
		<updated>2013-05-02T00:10:34Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Version 1.0 ==&lt;br /&gt;
&lt;br /&gt;
Pioneer version 1.0 will be the first &amp;quot;stable&amp;quot; release. This will not be the final state of the game: development will continue, particularly adding a lot more content and game-play features, but features present in version 1.0 are expected to be supported for a long time.&lt;br /&gt;
&lt;br /&gt;
Things that must be done before we can release version 1.0:&lt;br /&gt;
&lt;br /&gt;
'''''Warning:''' This list is incomplete - and under active discussion so subject to change''&lt;br /&gt;
=== Technical features ===&lt;br /&gt;
* The save system will be changed to allow future versions to be made without breaking all prior saved games.&lt;br /&gt;
* Equipment control will be moved to Lua.&lt;br /&gt;
* All user-interface will be converted to use the new-ui system and be driven by Lua.&lt;br /&gt;
* Star system generation will be rewritten to allow partially custom systems, and to allow some types of changes to be made without having knock-on effects through the entire galaxy or system.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay features ===&lt;br /&gt;
* Military progression / treason.&lt;br /&gt;
* Something like the Scout missions the walterar has done, exploration jobs.&lt;br /&gt;
* No hypersace from in atmosphere / or too close to a planet surface.&lt;br /&gt;
* In-system hyperspace jumps to make assassination missions and piracy actually possible.&lt;br /&gt;
* Alternatively a Fast-As-Light drive, Shadmar has taken a hacked one I (fluffyfreak) wrote and updated it for Paragon.&lt;br /&gt;
&lt;br /&gt;
=== More proposed stuff ===&lt;br /&gt;
&lt;br /&gt;
From [[User:Luomu|Luomu]] ([[User talk:Luomu|talk]]) 17:09, 1 May 2013 (PDT)&lt;br /&gt;
&lt;br /&gt;
* New, fault tolerant save system: this is the most important thing ever&lt;br /&gt;
* Rewrite the HUD&lt;br /&gt;
** Gather a list of components before doing any visual design&lt;br /&gt;
* Controls&lt;br /&gt;
** New input system: do we need one, or can the current one be fixed?&lt;br /&gt;
** Current problems: conflicting binds, cannot bind multiple inputs per action&lt;br /&gt;
** Remove rarely used buttons?&lt;br /&gt;
* Camera&lt;br /&gt;
** Add chase camera, padlock&lt;br /&gt;
* Weapons&lt;br /&gt;
** goals: allow more than just laser bolts (beams, missiles), auto-tracking guns and turrets&lt;br /&gt;
** rewrite, basically&lt;br /&gt;
** turn missiles into guided projectiles instead of ships&lt;br /&gt;
** conflicts with lua trade goods/equipment?&lt;br /&gt;
* Star views and navigation&lt;br /&gt;
** combine system (orbit) view into star map&lt;br /&gt;
** maybe other streamlining as well?&lt;br /&gt;
** bookmarks, travel log&lt;br /&gt;
* Separate Player from Ships&lt;br /&gt;
** to enable shuttlecraft and remote drones&lt;br /&gt;
** must be done during alpha, not sensible afterwards (breaks modules)&lt;br /&gt;
* AI&lt;br /&gt;
** needs more higher level stuff like basic self preservation, modules must not have to implement their own (like tradeships...)&lt;br /&gt;
** formations, anyone?&lt;br /&gt;
* Ship visual customization&lt;br /&gt;
* Space stations&lt;br /&gt;
** external docking&lt;br /&gt;
** traffic rules (don't allow modules to let ships idle forever)&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1358</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Roadmap&amp;diff=1358"/>
		<updated>2013-05-02T00:09:02Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Version 1.0 ==&lt;br /&gt;
&lt;br /&gt;
Pioneer version 1.0 will be the first &amp;quot;stable&amp;quot; release. This will not be the final state of the game: development will continue, particularly adding a lot more content and game-play features, but features present in version 1.0 are expected to be supported for a long time.&lt;br /&gt;
&lt;br /&gt;
Things that must be done before we can release version 1.0:&lt;br /&gt;
&lt;br /&gt;
'''''Warning:''' This list is incomplete - and under active discussion so subject to change''&lt;br /&gt;
=== Technical features ===&lt;br /&gt;
* The save system will be changed to allow future versions to be made without breaking all prior saved games.&lt;br /&gt;
* Equipment control will be moved to Lua.&lt;br /&gt;
* All user-interface will be converted to use the new-ui system and be driven by Lua.&lt;br /&gt;
* Star system generation will be rewritten to allow partially custom systems, and to allow some types of changes to be made without having knock-on effects through the entire galaxy or system.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay features ===&lt;br /&gt;
* Military progression / treason.&lt;br /&gt;
* Something like the Scout missions the walterar has done, exploration jobs.&lt;br /&gt;
* No hypersace from in atmosphere / or too close to a planet surface.&lt;br /&gt;
* In-system hyperspace jumps to make assassination missions and piracy actually possible.&lt;br /&gt;
* Alternatively a Fast-As-Light drive, Shadmar has taken a hacked one I (fluffyfreak) wrote and updated it for Paragon.&lt;br /&gt;
&lt;br /&gt;
=== More proposed stuff ===&lt;br /&gt;
&lt;br /&gt;
From [[User:Luomu|Luomu]] ([[User talk:Luomu|talk]]) 17:09, 1 May 2013 (PDT)&lt;br /&gt;
&lt;br /&gt;
* New, fault tolerant save system: this is the most important thing ever&lt;br /&gt;
* Rewrite the HUD&lt;br /&gt;
** Gather a list of components before doing any visual design&lt;br /&gt;
* Controls&lt;br /&gt;
** New input system: do we need one, or can the current one be fixed?&lt;br /&gt;
** Current problems: conflicting binds, cannot bind multiple inputs per action&lt;br /&gt;
** Remove rarely used buttons?&lt;br /&gt;
* Camera&lt;br /&gt;
** Add chase camera, padlock&lt;br /&gt;
* Weapons&lt;br /&gt;
** goals: allow more than just laser bolts (beams, missiles), auto-tracking guns and turrets&lt;br /&gt;
** rewrite, basically&lt;br /&gt;
** turn missiles into guided projectiles instead of ships&lt;br /&gt;
** conflicts with lua trade goods/equipment?&lt;br /&gt;
* Star views and navigation&lt;br /&gt;
** combine system (orbit) view into star map&lt;br /&gt;
** maybe other streamlining as well?&lt;br /&gt;
** bookmarks, travel log&lt;br /&gt;
* Separate Player from Ships&lt;br /&gt;
** to enable shuttlecraft and remote drones&lt;br /&gt;
** must be done during alpha, not sensible afterwards (breaks modules)&lt;br /&gt;
* AI&lt;br /&gt;
** needs more higher level stuff like basic self preservation, modules must not have to implement their own (like tradeships...)&lt;br /&gt;
** formations, anyone?&lt;br /&gt;
* Ship visual customization&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Draw_Refactoring_Notes&amp;diff=1294</id>
		<title>Draw Refactoring Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Draw_Refactoring_Notes&amp;diff=1294"/>
		<updated>2013-04-13T22:50:43Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main goal is the correct drawing of transparent objects. This is also a nice chance to get rid of the fixed function matrix stack operations.&lt;br /&gt;
&lt;br /&gt;
Transparent objects include:&lt;br /&gt;
* ship thrusters&lt;br /&gt;
* light billboards&lt;br /&gt;
* lasers&lt;br /&gt;
* shield effects&lt;br /&gt;
* glass cockpits&lt;br /&gt;
* planet rings&lt;br /&gt;
* star halos&lt;br /&gt;
&lt;br /&gt;
Theory:&lt;br /&gt;
&lt;br /&gt;
# Do a collection pass, frustum cull and collect all objects to &amp;quot;bins&amp;quot; or &amp;quot;buckets&amp;quot;&lt;br /&gt;
# Depth write on, depth testing on. Sort and draw opaque objects, preferably front to back&lt;br /&gt;
# Depth write off, depth testing on. Sort and draw transparent objects, back to front&lt;br /&gt;
&lt;br /&gt;
Step 2 will not work, since bodies are currently drawn back to front. After drawing distant planets, or when shaders are off, the depth buffer is cleared. If this is still necessary to do, object drawing needs to be separated into two phases (after Background is drawn):&lt;br /&gt;
&lt;br /&gt;
# Draw far objects: planets and their rings, stars. Depth will be cleared during this.&lt;br /&gt;
# Draw closer objects: cities, ships, lasers&lt;br /&gt;
&lt;br /&gt;
Pass camera to all renderable objects:&lt;br /&gt;
&lt;br /&gt;
 void Body::Render(Camera* camera, ...) {&lt;br /&gt;
    //instead of immediate drawing, add Graphic objects to be drawn later&lt;br /&gt;
    //calculate transformations here&lt;br /&gt;
    camera-&amp;gt;opaqueBucket.Add(Graphic(...))&lt;br /&gt;
    camera-&amp;gt;transBucket.Add(Graphic(...))&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Notes for optimization ==&lt;br /&gt;
&lt;br /&gt;
A smarter structure will also allow for some optimizations - someday.&lt;br /&gt;
&lt;br /&gt;
=== State sorting ===&lt;br /&gt;
&lt;br /&gt;
Objects can be sorted by material or material properties. When everything uses Materials the Renderer will avoid some state switches by comparing material pointers. Example: thrusters all use the same material.&lt;br /&gt;
&lt;br /&gt;
=== Early Z ===&lt;br /&gt;
In theory, depth testing can be done as soon as a vertex shader finishes. This can avoid running costly fragment shaders for invisible fragments. However Pioneer cannot benefit from this since all fragment shaders calculate a custom depth - the shader needs to be fully run before the final depth is known. It's not too bad, since we don't have that much overdraw - mostly the player is seeing black space.&lt;br /&gt;
&lt;br /&gt;
In any case, the problem can be worked around with a Z prepass - render all objects using a shader that only does the depth calculation, then turn depth write off and draw the objects again with the usual fragment shader (but without gl_FragDepth).&lt;br /&gt;
&lt;br /&gt;
We might see the benefit in cities with many, complex buildings.&lt;br /&gt;
&lt;br /&gt;
=== Batching ===&lt;br /&gt;
&lt;br /&gt;
To reduce the number of glDraw* calls, simple objects (thrusters, effect quads) can be copied into temporary vertex buffers (check identical materials again), and then drawn at once. Note thrusters, lasers are additively blended and do not have to be individually sorted.&lt;br /&gt;
&lt;br /&gt;
== New notes (2013) ==&lt;br /&gt;
&lt;br /&gt;
Planets mix opaque and transparent geometry. Since zbuffer is cleared after rendering a faraway planet, the planet's surface, rings and atmosphere need to be rendered in one go.&lt;br /&gt;
&lt;br /&gt;
Models may mix opaque and transparent geometry. Such models need to be therefore drawn twice, with the appropriate node masks used during draw traversal. A special visitor should be used to update the nodemasks to prevent unnecessary traversal as high as possible (matrix transform with transparent children should be marked transparent).&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_viewer&amp;diff=765</id>
		<title>Model viewer</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_viewer&amp;diff=765"/>
		<updated>2013-02-04T13:49:10Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Hotkeys */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Starting the Model Viewer =&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
Create a shortcut to pioneer.exe. Edit shortcut properties, and add &amp;quot; -mv&amp;quot; to the end of the Target box, so that the whole Target is something like:&lt;br /&gt;
&lt;br /&gt;
    C:\Users\jpab\pioneer\Pioneer.exe -mv&lt;br /&gt;
&lt;br /&gt;
Then you can run the model viewer by using the shortcut.&lt;br /&gt;
&lt;br /&gt;
Or use the command line (like Linux)&lt;br /&gt;
&lt;br /&gt;
=== OS X ===&lt;br /&gt;
&lt;br /&gt;
Hold down the Option key while clicking on the pioneer.app icon to launch the model viewer instead of the game.&lt;br /&gt;
&lt;br /&gt;
Or use the command line (like Linux)&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
Pass the &amp;quot;-mv&amp;quot; flag when running the game:&lt;br /&gt;
&lt;br /&gt;
    pioneer -mv &amp;lt;optional model name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Hotkeys =&lt;br /&gt;
&lt;br /&gt;
Esc: Quit&lt;br /&gt;
&lt;br /&gt;
Tab: Toggle UI&lt;br /&gt;
&lt;br /&gt;
PrintScr: Screenshot&lt;br /&gt;
&lt;br /&gt;
Space: Reset camera view + thruster sliders&lt;br /&gt;
&lt;br /&gt;
G: Cycle grid mode&lt;br /&gt;
&lt;br /&gt;
R: Randomize colour sliders&lt;br /&gt;
&lt;br /&gt;
Z: Toggle wireframe mode&lt;br /&gt;
&lt;br /&gt;
P: Toggle landing pad/scale test&lt;br /&gt;
&lt;br /&gt;
Camera view presets are like Blender:&lt;br /&gt;
&lt;br /&gt;
* Numpad 1 - Front view&lt;br /&gt;
* Ctrl+Numpad - Rear view&lt;br /&gt;
* Numpad 3 - Right view&lt;br /&gt;
* Ctrl+Numpad 3 - Left view&lt;br /&gt;
* Numpad 7 - Top view&lt;br /&gt;
* Ctrl+Numpad 7 - Bottom view&lt;br /&gt;
* Numpad2/4/6/8: Rotate view&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=747</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=747"/>
		<updated>2013-02-02T18:25:48Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Collisions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae).'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
* Versions downloaded from blender.org support Collada out of the box, while the version distributed with some Linux distros doesn't&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name. If in doubt, note that both .obj and .dae files are human readable, and you can find the assigned names in them with a text editor.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 128. Default 100.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||This material will use the pattern/colour system. Read more below.&lt;br /&gt;
|-&lt;br /&gt;
| unlit||No lighting, diffuse value can still be used to tint the result&lt;br /&gt;
|-&lt;br /&gt;
| two_sided||Self-explanatory, however normals on the other side are not automatically inversed (no good way to do this) so the usefulness is limited&lt;br /&gt;
|-&lt;br /&gt;
| alpha_test||Pixels with alpha value &amp;lt; 0.5 are discarded, this is good for fences and such. It produces sharp edges but the geometry does not need to be sorted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes.&lt;br /&gt;
&lt;br /&gt;
For more control, name objects with the prefix &amp;quot;collision_&amp;quot; and they will be added to form a collision mesh (these objects will not be visible geometry, and the bounding box will not be generated).&lt;br /&gt;
&lt;br /&gt;
Note, these names are reserved for station collision trigger surfaces:&lt;br /&gt;
&lt;br /&gt;
* collision_pad1&lt;br /&gt;
* collision_pad2&lt;br /&gt;
* collision_pad3&lt;br /&gt;
* collision_pad4&lt;br /&gt;
&lt;br /&gt;
You can also import a separate mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
The collision meshis separate from all detail levels, so it should be only defined once.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=746</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=746"/>
		<updated>2013-02-02T18:22:30Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Collisions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae).'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
* Versions downloaded from blender.org support Collada out of the box, while the version distributed with some Linux distros doesn't&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name. If in doubt, note that both .obj and .dae files are human readable, and you can find the assigned names in them with a text editor.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 128. Default 100.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||This material will use the pattern/colour system. Read more below.&lt;br /&gt;
|-&lt;br /&gt;
| unlit||No lighting, diffuse value can still be used to tint the result&lt;br /&gt;
|-&lt;br /&gt;
| two_sided||Self-explanatory, however normals on the other side are not automatically inversed (no good way to do this) so the usefulness is limited&lt;br /&gt;
|-&lt;br /&gt;
| alpha_test||Pixels with alpha value &amp;lt; 0.5 are discarded, this is good for fences and such. It produces sharp edges but the geometry does not need to be sorted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes.&lt;br /&gt;
&lt;br /&gt;
For more control, name objects with the prefix &amp;quot;collision_&amp;quot; and they will be added to form a collision mesh (the bounding box will not be generated).&lt;br /&gt;
&lt;br /&gt;
Note, these names are reserved for station collision trigger surfaces:&lt;br /&gt;
&lt;br /&gt;
* collision_pad1&lt;br /&gt;
* collision_pad2&lt;br /&gt;
* collision_pad3&lt;br /&gt;
* collision_pad4&lt;br /&gt;
&lt;br /&gt;
You can also import a separate mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
The collision mesh is separate from all detail levels, so it should be only defined once.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=702</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=702"/>
		<updated>2013-01-24T13:23:18Z</updated>

		<summary type="html">&lt;p&gt;Luomu: These do not actually take a value&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae).'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
* Versions downloaded from blender.org support Collada out of the box, while the version distributed with some Linux distros doesn't&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name. If in doubt, note that both .obj and .dae files are human readable, and you can find the assigned names in them with a text editor.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 128. Default 100.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||This material will use the pattern/colour system. Read more below.&lt;br /&gt;
|-&lt;br /&gt;
| unlit||No lighting, diffuse value can still be used to tint the result&lt;br /&gt;
|-&lt;br /&gt;
| two_sided||Self-explanatory, however normals on the other side are not automatically inversed (no good way to do this) so the usefulness is limited&lt;br /&gt;
|-&lt;br /&gt;
| alpha_test||Pixels with alpha value &amp;lt; 0.5 are discarded, this is good for fences and such. It produces sharp edges but the geometry does not need to be sorted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=User:Luomu&amp;diff=563</id>
		<title>User:Luomu</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=User:Luomu&amp;diff=563"/>
		<updated>2013-01-19T22:09:18Z</updated>

		<summary type="html">&lt;p&gt;Luomu: Replaced content with &amp;quot;= .plan =

Hello! I do things for Pioneer. Not as much as I would like to.

You may catch me at:

* github.com/Luomu
* irc: kko_&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= .plan =&lt;br /&gt;
&lt;br /&gt;
Hello! I do things for Pioneer. Not as much as I would like to.&lt;br /&gt;
&lt;br /&gt;
You may catch me at:&lt;br /&gt;
&lt;br /&gt;
* github.com/Luomu&lt;br /&gt;
* irc: kko_&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=556</id>
		<title>Asset List</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=556"/>
		<updated>2013-01-19T03:45:28Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Others */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A list of models that we have/want/need in the core game.&lt;br /&gt;
&lt;br /&gt;
== Ships ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!Purpose&lt;br /&gt;
!Model&lt;br /&gt;
!Status&lt;br /&gt;
|-&lt;br /&gt;
| Shuttle || Small shuttlecraft for in-system trips, package deliveries, etc. Not hyperspace-capable. || ip_shuttle || Needs to be replaced or converted from LMR&lt;br /&gt;
|-&lt;br /&gt;
| Starter || Small multirole craft, capable of hyperspace and atmospheric flight. || eagle_lrf || Needs to be replaced or converted from LMR&lt;br /&gt;
|-&lt;br /&gt;
| Medium || Medium/large multirole craft, for cargo runs, exploration, etc. || lanner || Being converted from LMR. [https://github.com/pioneerspacesim/pioneer/pull/1957 #1957]&lt;br /&gt;
|-&lt;br /&gt;
| Freighter || Large hyperspace-capable cargo ship || caribou? hammerhead? || Needs to be replaced or converted from LMR&lt;br /&gt;
|-&lt;br /&gt;
| Classic || Medium single-person fighter craft, resembling the class Cobra III, for the Lave start point. || cobra_mk3 || Needs to be replaced. test_cobra may be a good starting point&lt;br /&gt;
|-&lt;br /&gt;
| Fighter || Small, fast short-range fighter, not hyperspace-capable. For use by police/pirates. || talon? || Needs to be replaced or converted from LMR&lt;br /&gt;
|-&lt;br /&gt;
| Bulk || Enormous supply ship, for positioning near stations (and later convoys etc). Non-playable || lrc, lynx || Needs to be replaced or converted from LMR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
&lt;br /&gt;
Surface and spacestations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!Purpose&lt;br /&gt;
!Model&lt;br /&gt;
!Status&lt;br /&gt;
|-&lt;br /&gt;
| Orbital || Ring-type space station with internal docking space for four ships. || big_crappy_spacestation || Converted from LMR. [https://github.com/pioneerspacesim/pioneer/pull/1932 #1932]&lt;br /&gt;
|-&lt;br /&gt;
| Surface || Open-air surface station with four 100x100m landing pads || ground_station_4 || Converted from LMR. [https://github.com/pioneerspacesim/pioneer/pull/1932 #1932]&lt;br /&gt;
|-&lt;br /&gt;
| Polyhedron || Resembling the classic Coriolis station, For the Lave retro starting point || nice_spacestation || Needs to be replaced (LMR conversion unsuitable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!Purpose&lt;br /&gt;
|-&lt;br /&gt;
| Cargo container || A generic container, should be well visible&lt;br /&gt;
|-&lt;br /&gt;
| Gun || Ship weapon model, used for all types for now&lt;br /&gt;
|-&lt;br /&gt;
| Missile launcher || Weapon model attached to ships that carry missiles&lt;br /&gt;
|-&lt;br /&gt;
| Missile || Fired missile model, used for all types&lt;br /&gt;
|-&lt;br /&gt;
| Tombstone || With a label&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=498</id>
		<title>Asset List</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=498"/>
		<updated>2013-01-18T01:09:33Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ships ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Starter ship || To replace the Eagle LRF model. A single person fighter craft, capable of atmospheric flight.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Cobra Mk3&amp;quot; || A ship resembling the classic cobra shape, for the Lave classic starting point&lt;br /&gt;
|-&lt;br /&gt;
| IP shuttle || A small shuttlecraft for trips within one system&lt;br /&gt;
|-&lt;br /&gt;
| Lanner-alike || Multirole craft, our signature ship&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
&lt;br /&gt;
Surface and spacestations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Generic orbital || Ring-type space station with internal docking space for four ships.&lt;br /&gt;
|-&lt;br /&gt;
| Generic surface || Open-air surface station with four 100x100m landing pads&lt;br /&gt;
|-&lt;br /&gt;
| Not Coriolis || Resembling the classic Coriolis station, For the Lave retro starting point&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Cargo container || A generic container, should be well visible&lt;br /&gt;
|-&lt;br /&gt;
| Gun || Ship weapon model, used for all types for now&lt;br /&gt;
|-&lt;br /&gt;
| Missile launcher || Weapon model attached to ships that carry missiles&lt;br /&gt;
|-&lt;br /&gt;
| Missile || Fired missile model, used for all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=497</id>
		<title>Asset List</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=497"/>
		<updated>2013-01-18T01:07:13Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Others */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ships ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Starter ship || To replace the Eagle LRF model. A single person fighter craft, capable of atmospheric flight.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Cobra Mk3&amp;quot; || A ship resembling the classic cobra shape, for the Lave classic starting point&lt;br /&gt;
|-&lt;br /&gt;
| IP shuttle || A small shuttlecraft for trips within one system&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
&lt;br /&gt;
Surface and spacestations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Generic orbital || Ring-type space station with internal docking space for four ships.&lt;br /&gt;
|-&lt;br /&gt;
| Generic surface || Open-air surface station with four 100x100m landing pads&lt;br /&gt;
|-&lt;br /&gt;
| Not Coriolis || Resembling the classic Coriolis station, For the Lave retro starting point&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Cargo container || A generic container, should be well visible&lt;br /&gt;
|-&lt;br /&gt;
| Gun || Ship weapon model, used for all types for now&lt;br /&gt;
|-&lt;br /&gt;
| Missile launcher || Weapon model attached to ships that carry missiles&lt;br /&gt;
|-&lt;br /&gt;
| Missile || Fired missile model, used for all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=496</id>
		<title>Asset List</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=496"/>
		<updated>2013-01-18T01:06:22Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Others */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ships ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Starter ship || To replace the Eagle LRF model. A single person fighter craft, capable of atmospheric flight.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Cobra Mk3&amp;quot; || A ship resembling the classic cobra shape, for the Lave classic starting point&lt;br /&gt;
|-&lt;br /&gt;
| IP shuttle || A small shuttlecraft for trips within one system&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
&lt;br /&gt;
Surface and spacestations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Generic orbital || Ring-type space station with internal docking space for four ships.&lt;br /&gt;
|-&lt;br /&gt;
| Generic surface || Open-air surface station with four 100x100m landing pads&lt;br /&gt;
|-&lt;br /&gt;
| Not Coriolis || Resembling the classic Coriolis station, For the Lave retro starting point&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Cargo container || A generic container, should be well visible&lt;br /&gt;
|-&lt;br /&gt;
| Gun || Universal ship weapon model&lt;br /&gt;
|-&lt;br /&gt;
| Missile launcher || Weapon model attached to ships that carry missiles&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=495</id>
		<title>Asset List</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=495"/>
		<updated>2013-01-18T01:05:16Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ships ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Starter ship || To replace the Eagle LRF model. A single person fighter craft, capable of atmospheric flight.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Cobra Mk3&amp;quot; || A ship resembling the classic cobra shape, for the Lave classic starting point&lt;br /&gt;
|-&lt;br /&gt;
| IP shuttle || A small shuttlecraft for trips within one system&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
&lt;br /&gt;
Surface and spacestations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Generic orbital || Ring-type space station with internal docking space for four ships.&lt;br /&gt;
|-&lt;br /&gt;
| Generic surface || Open-air surface station with four 100x100m landing pads&lt;br /&gt;
|-&lt;br /&gt;
| Not Coriolis || Resembling the classic Coriolis station, For the Lave retro starting point&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Cargo container || A generic container, should be well visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=468</id>
		<title>Asset List</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Asset_List&amp;diff=468"/>
		<updated>2013-01-13T17:15:13Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ships ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Starter ship || To replace the Eagle LRF model. A single person fighter craft, capable of atmospheric flight.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Cobra Mk3&amp;quot; || A ship resembling the classic cobra shape, for the Lave classic starting point&lt;br /&gt;
|-&lt;br /&gt;
| IP shuttle || A small shuttlecraft for trips within one system&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
&lt;br /&gt;
Surface and spacestations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Not Coriolis || Resembling the classic Coriolis station, For the Lave retro starting point&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Cargo container || A generic container, should be well visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=458</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=458"/>
		<updated>2013-01-06T14:22:26Z</updated>

		<summary type="html">&lt;p&gt;Luomu: Update specular exponent value&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae).'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
* Versions downloaded from blender.org support Collada out of the box, while the version distributed with some Linux distros doesn't&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name. If in doubt, note that both .obj and .dae files are human readable, and you can find the assigned names in them with a text editor.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 128. Default 100.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||yes/no. This material will use the pattern/colour system. Read more below. Default no.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=425</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=425"/>
		<updated>2012-12-15T15:36:39Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Importing models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae)'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 200. Default 200.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||yes/no. This material will use the pattern/colour system. Read more below. Default no.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=424</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=424"/>
		<updated>2012-12-15T15:36:15Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Importing models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae)'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64]. For blender, a quick checklist is:&lt;br /&gt;
&lt;br /&gt;
* Always generate UV coordinates for the model&lt;br /&gt;
* Coordinates: X right, Y forward, Z up&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 200. Default 200.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||yes/no. This material will use the pattern/colour system. Read more below. Default no.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=423</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=423"/>
		<updated>2012-12-15T15:06:05Z</updated>

		<summary type="html">&lt;p&gt;Luomu: /* Export settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae)'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64].&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 200. Default 200.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||yes/no. This material will use the pattern/colour system. Read more below. Default no.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
Collada (.dae) export settings for Blender 2.6:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=File:Newmodel_exportsettings01.png&amp;diff=422</id>
		<title>File:Newmodel exportsettings01.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=File:Newmodel_exportsettings01.png&amp;diff=422"/>
		<updated>2012-12-15T15:05:34Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=421</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=421"/>
		<updated>2012-12-15T15:05:18Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae)'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64].&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 200. Default 200.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||yes/no. This material will use the pattern/colour system. Read more below. Default no.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Export settings ===&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_exportsettings01.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=418</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=418"/>
		<updated>2012-12-15T04:25:33Z</updated>

		<summary type="html">&lt;p&gt;Luomu: viewer note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae)'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64].&lt;br /&gt;
&lt;br /&gt;
The [[Model viewer]] is supplied with the game.&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 200. Default 200.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||yes/no. This material will use the pattern/colour system. Read more below. Default no.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=417</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=417"/>
		<updated>2012-12-15T04:20:35Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae)'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64].&lt;br /&gt;
&lt;br /&gt;
The model viewer is supplied with the game. See [[Newmodelviewer]].&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 200. Default 200.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||yes/no. This material will use the pattern/colour system. Read more below. Default no.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=User:Luomu&amp;diff=416</id>
		<title>User:Luomu</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=User:Luomu&amp;diff=416"/>
		<updated>2012-12-15T04:20:23Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= .plan =&lt;br /&gt;
&lt;br /&gt;
Hello! I do things for Pioneer. Not as much as I would like to.&lt;br /&gt;
&lt;br /&gt;
You may catch me at:&lt;br /&gt;
&lt;br /&gt;
* github.com/Luomu&lt;br /&gt;
* irc: kko_&lt;br /&gt;
&lt;br /&gt;
== Scratchpad ==&lt;br /&gt;
&lt;br /&gt;
=== New systems that need to be developed ===&lt;br /&gt;
&lt;br /&gt;
Lots of them :)&lt;br /&gt;
&lt;br /&gt;
* Model cache system so geometry is converted only once&lt;br /&gt;
* Lua API&lt;br /&gt;
* System to handle attachments&lt;br /&gt;
** Tag points may be rotated in code to implement target tracking guns&lt;br /&gt;
* System to handle spaceship logos, station advertisements and shipyard UI to customize your ship&lt;br /&gt;
** It should be possible to add ship insignia by dropping a .png in your user folder, without saves breaking if you later remove that .png&lt;br /&gt;
* UI to paint your ship and a system to give faction-appropriate colour schemes to NPC ships&lt;br /&gt;
* Building sets&lt;br /&gt;
* Update collision system to handle animation (just updating BB should be enough)&lt;br /&gt;
* Separate space station docking scripts from the old models&lt;br /&gt;
* There is no good way to define parameters for certain triangles (geomflags in LMR). The main use case is to mark landing pads, this will be doable with a named node.&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
=== Graph dump ===&lt;br /&gt;
&lt;br /&gt;
Below, an actual model test_meteor (two LODs, animated landing gear, several ship thrusters)&lt;br /&gt;
&lt;br /&gt;
 Group - test_meteor&lt;br /&gt;
  LOD&lt;br /&gt;
    Group - 10&lt;br /&gt;
      MatrixTransform - Scene&lt;br /&gt;
        MatrixTransform - Meteor_Low&lt;br /&gt;
          StaticGeometry - Meteor_Low_mesh&lt;br /&gt;
    Group - 1000&lt;br /&gt;
      Group&lt;br /&gt;
        MatrixTransform - Scene&lt;br /&gt;
          MatrixTransform - Meteor_Hi&lt;br /&gt;
            StaticGeometry - Meteor_Hi_mesh&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_linear_rear_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_right_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_top_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_right_000&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_left_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_left_002&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_linear_rear_000&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_top_000&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_wing_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_wing_000&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_wing_002&lt;br /&gt;
          MatrixTransform - decal_01&lt;br /&gt;
            StaticGeometry - decal_01_mesh&lt;br /&gt;
      Group&lt;br /&gt;
        MatrixTransform - Root&lt;br /&gt;
          MatrixTransform - LandingGear&lt;br /&gt;
            StaticGeometry - LandingGear_mesh&lt;br /&gt;
  MatrixTransform - tag_gun_left&lt;br /&gt;
  MatrixTransform - tag_gun_right&lt;br /&gt;
&lt;br /&gt;
Optimization potential: unanimated geometry should be pre-translated at loading phase to get rid of some MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
Question: you might notice tag_gun_left and right are attached to the model root node. They have been pre-transformed to make the positions absolute. It's done this way since if a tag is defined on each LOD it can practically have several positions. This is a bit stupid since now they are outside of the LOD node. Should tags be kept in their original locations in the structure (then model-&amp;gt;FindTag will potentially return more than one)?&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=User:Luomu&amp;diff=415</id>
		<title>User:Luomu</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=User:Luomu&amp;diff=415"/>
		<updated>2012-12-15T04:17:24Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= .plan =&lt;br /&gt;
&lt;br /&gt;
Hello! I do things for Pioneer. Not as much as I would like to.&lt;br /&gt;
&lt;br /&gt;
You may catch me at:&lt;br /&gt;
&lt;br /&gt;
* github.com/Luomu&lt;br /&gt;
* irc: kko_&lt;br /&gt;
&lt;br /&gt;
== Scratchpad ==&lt;br /&gt;
&lt;br /&gt;
=== New systems that need to be developed ===&lt;br /&gt;
&lt;br /&gt;
Lots of them :)&lt;br /&gt;
&lt;br /&gt;
* Model cache system so geometry is converted only once&lt;br /&gt;
* Lua API&lt;br /&gt;
* System to handle attachments&lt;br /&gt;
** Tag points may be rotated in code to implement target tracking guns&lt;br /&gt;
* System to handle spaceship logos, station advertisements and shipyard UI to customize your ship&lt;br /&gt;
** It should be possible to add ship insignia by dropping a .png in your user folder, without saves breaking if you later remove that .png&lt;br /&gt;
* UI to paint your ship and a system to give faction-appropriate colour schemes to NPC ships&lt;br /&gt;
* Building sets&lt;br /&gt;
* Update collision system to handle animation (just updating BB should be enough)&lt;br /&gt;
* Separate space station docking scripts from the old models&lt;br /&gt;
* There is no good way to define parameters for certain triangles (geomflags in LMR). The main use case is to mark landing pads, this will be doable with a named node.&lt;br /&gt;
* etc&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=414</id>
		<title>Model system</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_system&amp;diff=414"/>
		<updated>2012-12-15T04:16:50Z</updated>

		<summary type="html">&lt;p&gt;Luomu: Removed todo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
tl;dr: a simple scenegraph-based approach that has nothing to do with the old system or Lua, focus is on easy importing, supports some animation.&lt;br /&gt;
&lt;br /&gt;
== Importing models ==&lt;br /&gt;
&lt;br /&gt;
The import system theoretically supports [http://assimp.sourceforge.net/main_features_formats.html many different formats] but you are expected to use only some:&lt;br /&gt;
&lt;br /&gt;
* When node structure, node names and animations matter, use '''Collada (.dae)'''&lt;br /&gt;
* For static geometry, such as buildings, OBJ is recommended, this may allow for some optimizations&lt;br /&gt;
&lt;br /&gt;
The only officially tested 3D modelling program at the moment is [http://www.blender.org/ Blender 2.64].&lt;br /&gt;
&lt;br /&gt;
The model viewer is supplied with the game. See [[Newmodelviewer]].&lt;br /&gt;
&lt;br /&gt;
=== Model definition file ===&lt;br /&gt;
&lt;br /&gt;
Models must be placed under '''data/models'''&lt;br /&gt;
&lt;br /&gt;
To define a model, create a simple &amp;lt;code&amp;gt;name_here.model&amp;lt;/code&amp;gt; text file along with your exported meshes:&lt;br /&gt;
&lt;br /&gt;
 #Comments can be written like this&lt;br /&gt;
 #Define all used materials first&lt;br /&gt;
 Material some-material&lt;br /&gt;
 tex_diff some_texture.png&lt;br /&gt;
 diffuse 0.8 0.7 0.7&lt;br /&gt;
 &lt;br /&gt;
 #Meshes to be imported into this model, should be in the current folder&lt;br /&gt;
 #Mixing different formats should be OK&lt;br /&gt;
 mesh part1.obj&lt;br /&gt;
 mesh part2.obj&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
Only material names are imported from 3D models, to set material properties use a small definition like this:&lt;br /&gt;
&lt;br /&gt;
 material CobraI_body&lt;br /&gt;
 tex_diff CobraI_diff.png&lt;br /&gt;
 tex_glow CobraI_emit.png&lt;br /&gt;
 tex_spec CobraI_spec.png&lt;br /&gt;
 diffuse 1.0 1.0 1.0&lt;br /&gt;
 specular 1.0 1.0 1.0&lt;br /&gt;
 shininess 150&lt;br /&gt;
&lt;br /&gt;
=== Material properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| material || Name. Mandatory! Note, some exporters modify the names from what is visible in the modeling program, for example the Blender 2.6 Collada exporter adds &amp;quot;-material&amp;quot; to each name. You'll have to use this final name.&lt;br /&gt;
|-&lt;br /&gt;
| diffuse|| Diffuse colour RGB. Default white.&lt;br /&gt;
|-&lt;br /&gt;
| specular|| Colour of specular highlights, RGB. Default white. Set to black to disable highlights.&lt;br /&gt;
|-&lt;br /&gt;
| emissive|| Self-illumination colour, RGB. Default black.&lt;br /&gt;
|-&lt;br /&gt;
| shininess|| Sharpness/size of specular highlights, 0 - 200. Default 200.&lt;br /&gt;
|-&lt;br /&gt;
| opacity|| 0-100, controls transparency of the material. A node with a material opacity less than 100 is treated as transparent, otherwise opaque.&lt;br /&gt;
|-&lt;br /&gt;
| tex_diff || Diffuse texture, file name (in the same folder). If you don't specify this, a white dummy texture is generated.&lt;br /&gt;
|-&lt;br /&gt;
| tex_glow||Self-illumination texture, overrides emissive colour parameter. Default none.&lt;br /&gt;
|-&lt;br /&gt;
| tex_spec||Specular highlight colour/intensity texture. Default none. Multiplied by specular colour parameter, so set it to white to leave control entirely to the texture.&lt;br /&gt;
|-&lt;br /&gt;
| use_patterns||yes/no. This material will use the pattern/colour system. Read more below. Default no.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_specularmap.png]]&lt;br /&gt;
Flat specular lighting improved by a specular map&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_glowmap.png]]&lt;br /&gt;
A model lit only by the self-illumination texture&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
A system to mark customizable color areas on a model without splitting it to separate materials.&lt;br /&gt;
&lt;br /&gt;
Patterns are small grayscale textures placed in the model folder, named pattern*.png. Using gray or white colour you can mark the areas tinted by one of the customizable colours (black marks unaffected areas). The colours are set by the game (faction-specific ship colours, shipyard UI for the player).&lt;br /&gt;
&lt;br /&gt;
The system has several limitations: it is not meant to do fine details, transitioning from one color to another is sharp and it works best with white/light textures. You'll have to experiment.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_patterns_asp.png]]&lt;br /&gt;
&lt;br /&gt;
== Detail levels ==&lt;br /&gt;
&lt;br /&gt;
Meshes can be grouped into detail levels using the &amp;lt;code&amp;gt;lod pixelsize&amp;lt;/code&amp;gt; directive:&lt;br /&gt;
&lt;br /&gt;
 lod 100&lt;br /&gt;
 mesh hull_low.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 200&lt;br /&gt;
 mesh hull_med.dae&lt;br /&gt;
 &lt;br /&gt;
 lod 1000&lt;br /&gt;
 mesh hull_hi.dae&lt;br /&gt;
 mesh landing_gear.dae&lt;br /&gt;
&lt;br /&gt;
A detail level will be picked if the approximate size of the model on screen is less than &amp;lt;code&amp;gt;pixelsize&amp;lt;/code&amp;gt; (for the highest level it does not matter as long as it's larger than the others). Use the modelviewer to find optimal sizes.&lt;br /&gt;
&lt;br /&gt;
You may specify any number of detail levels in any order, they will be sorted according to size.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Position, rotation and scale keyframe animation is supported. Since the Blender 2.6 Collada exporter cannot export multiple animations in one file, you will have to put it all in one timeline and split it at the import stage (this is also the only reliable way to get named animations). An animation is defined after all the meshes in format &amp;lt;code&amp;gt;anim name startframe endframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 anim gear_down 0 10&lt;br /&gt;
 anim something_else 12 25&lt;br /&gt;
&lt;br /&gt;
Note, Collada uses seconds instead of frame numbers. For the conversion to work, you should create the animations at '''24FPS'''.&lt;br /&gt;
&lt;br /&gt;
The game will recognize animations by name, the list of supported animations is to be decided.&lt;br /&gt;
&lt;br /&gt;
There is no animation blending, so two animations shouldn't be directly controlling the same node.&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
&lt;br /&gt;
Models may have special &amp;quot;tag point&amp;quot; nodes where other models may be attached. You may define a tag point in Blender by placing an Empty object and giving it one of the predefined names.&lt;br /&gt;
&lt;br /&gt;
The system is meant for attaching equipment: guns, cargo pods, turrets...&lt;br /&gt;
&lt;br /&gt;
Example: A generic gun model attached to a point &amp;quot;tag_gun_right&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_tagpoints01.png]]&lt;br /&gt;
&lt;br /&gt;
The actual list of available names has not been determined yet.&lt;br /&gt;
&lt;br /&gt;
== Collisions ==&lt;br /&gt;
&lt;br /&gt;
By default, the collision mesh of a model is the bounding box of all the meshes. For more control, you can import a custom mesh using the &amp;lt;code&amp;gt;collision&amp;lt;/code&amp;gt; directive in the model definition:&lt;br /&gt;
&lt;br /&gt;
 collision collision.obj&lt;br /&gt;
&lt;br /&gt;
This will be global for all detail levels.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_collmesh01.png]]&lt;br /&gt;
&lt;br /&gt;
== Decals ==&lt;br /&gt;
&lt;br /&gt;
Decals are meant for customizable insignia on spaceships and changing advertisements on space stations. Up to four unique decals are available for a model (multiple identical decals are allowed). Place a piece of geometry, usually a flat quad, with proper UV coordinates and name it decal_01, 02, 03 or 04. The game will then use a special material on the geometry, or make it invisible if no decal is to be used.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_decals01.png]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
Dynamic 3D labels are meant for naming ships and space stations. Put an empty node in the model and give it a name beginning with &amp;quot;label&amp;quot;. The text is set by the game at runtime if supported.&lt;br /&gt;
&lt;br /&gt;
Node scale can be used as usual but the text is not constrained to the node bounds or anything like that, so some trial will be required.&lt;br /&gt;
&lt;br /&gt;
You can use multiple label nodes but they will all show the same text.&lt;br /&gt;
&lt;br /&gt;
[[File:newmodel_labels01.png]]&lt;br /&gt;
&lt;br /&gt;
== Minor features ==&lt;br /&gt;
&lt;br /&gt;
=== Billboard lights ===&lt;br /&gt;
&lt;br /&gt;
Simple light sprites placed using empty nodes with special naming (navlight_*). Certain lights will blink when a ship's landing gear is down. This feature is not complete as it needs more support in the game.&lt;br /&gt;
&lt;br /&gt;
=== Thrusters ===&lt;br /&gt;
&lt;br /&gt;
Thrusters are marked with dummy objects. In Blender, create an &amp;quot;Empty&amp;quot; object and point its Z-axis (change the object display type to &amp;quot;arrows&amp;quot; or &amp;quot;single arrow&amp;quot; to visualize this) where the thruster should point. Thruster size is taken from the object scale. Begin the object name with either &amp;lt;code&amp;gt;thruster&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;thruster_linear&amp;lt;/code&amp;gt; so the importer can recognize them (linear thrusters light up only when moving up/down/left/right/forward/backward, not when turning).&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
You can find some testcase models at git://github.com/Luomu/newmodels.git.&lt;br /&gt;
&lt;br /&gt;
The internal scene graph consists of several of these nodes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Node|| Base class. A node can have a name and one or more parents.&lt;br /&gt;
|-&lt;br /&gt;
| Group|| A group is a Node that can have several children.&lt;br /&gt;
|-&lt;br /&gt;
| MatrixTransform|| A Group that applies a transformation to its child nodes when rendering.&lt;br /&gt;
|-&lt;br /&gt;
| StaticGeometry|| Contains one or more StaticMeshes.&lt;br /&gt;
|-&lt;br /&gt;
| LOD|| Detail level control node, picks one of the child nodes based on the approximate size of the model on screen.&lt;br /&gt;
|-&lt;br /&gt;
| ModelNode || Can be used to attach another Model as a submodel. Use case: dynamic equipment on ships.&lt;br /&gt;
|-&lt;br /&gt;
| More!||Some marginal nodes that exist at the moment are:&lt;br /&gt;
&lt;br /&gt;
* Thruster: spaceship thruster&lt;br /&gt;
* Billboard: can be used for light sprites (navlights on ships)&lt;br /&gt;
* Label3D: dynamic 2d text, meant for labeling ships&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MatrixTransform nodes are the most commonly used, if a geometry is rotated or scaled it will be parented to a MatrixTransform. A simple form of instancing can be achieved by adding a geometry as the child of several separate MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
During rendering, the graph is traversed twice. Once for opaque objects, and once for transparent objects (which includes decals, thrusters). The model system does not perform any depth sorting, this improvement job needs to be done elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
An animation consists of Channels. Each channel controls one node (always a MatrixTransform) and has a list of position and rotation Keys. Each key has a time and value. Keys are always linearly interpolated.&lt;br /&gt;
&lt;br /&gt;
At first the animations had proper play/pause/loop functionality but right now it is not so. Animation progress (and fun things like serialization) needs to be controlled directly by whatever feature uses the animation (see: landing gear).&lt;br /&gt;
&lt;br /&gt;
=== Graph dump ===&lt;br /&gt;
&lt;br /&gt;
Below, an actual model test_meteor (two LODs, animated landing gear, several ship thrusters)&lt;br /&gt;
&lt;br /&gt;
 Group - test_meteor&lt;br /&gt;
  LOD&lt;br /&gt;
    Group - 10&lt;br /&gt;
      MatrixTransform - Scene&lt;br /&gt;
        MatrixTransform - Meteor_Low&lt;br /&gt;
          StaticGeometry - Meteor_Low_mesh&lt;br /&gt;
    Group - 1000&lt;br /&gt;
      Group&lt;br /&gt;
        MatrixTransform - Scene&lt;br /&gt;
          MatrixTransform - Meteor_Hi&lt;br /&gt;
            StaticGeometry - Meteor_Hi_mesh&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_linear_rear_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_right_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_top_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_right_000&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_left_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_left_002&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_linear_rear_000&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_top_000&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_wing_001&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_wing_000&lt;br /&gt;
          MatrixTransform&lt;br /&gt;
            Thruster - thruster_wing_002&lt;br /&gt;
          MatrixTransform - decal_01&lt;br /&gt;
            StaticGeometry - decal_01_mesh&lt;br /&gt;
      Group&lt;br /&gt;
        MatrixTransform - Root&lt;br /&gt;
          MatrixTransform - LandingGear&lt;br /&gt;
            StaticGeometry - LandingGear_mesh&lt;br /&gt;
  MatrixTransform - tag_gun_left&lt;br /&gt;
  MatrixTransform - tag_gun_right&lt;br /&gt;
&lt;br /&gt;
Optimization potential: unanimated geometry should be pre-translated at loading phase to get rid of some MatrixTransforms.&lt;br /&gt;
&lt;br /&gt;
Question: you might notice tag_gun_left and right are attached to the model root node. They have been pre-transformed to make the positions absolute. It's done this way since if a tag is defined on each LOD it can practically have several positions. This is a bit stupid since now they are outside of the LOD node. Should tags be kept in their original locations in the structure (then model-&amp;gt;FindTag will potentially return more than one)?&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_viewer&amp;diff=401</id>
		<title>Model viewer</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_viewer&amp;diff=401"/>
		<updated>2012-12-12T03:13:45Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Newmodelviewer to Model viewer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To enter modelviewer mode, launch the game with:&lt;br /&gt;
&lt;br /&gt;
 pioneer -mv &amp;lt;optional model name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Hotkeys =&lt;br /&gt;
&lt;br /&gt;
Esc: Quit&lt;br /&gt;
&lt;br /&gt;
Tab: Toggle UI&lt;br /&gt;
&lt;br /&gt;
PrintScr: Screenshot&lt;br /&gt;
&lt;br /&gt;
Space: Reset camera view + thruster sliders&lt;br /&gt;
&lt;br /&gt;
G: Cycle grid mode&lt;br /&gt;
&lt;br /&gt;
R: Randomize colour sliders&lt;br /&gt;
&lt;br /&gt;
Z: Toggle wireframe mode&lt;br /&gt;
&lt;br /&gt;
Camera view presets are like Blender:&lt;br /&gt;
&lt;br /&gt;
* Numpad 1 - Front view&lt;br /&gt;
* Ctrl+Numpad - Rear view&lt;br /&gt;
* Numpad 3 - Right view&lt;br /&gt;
* Ctrl+Numpad 3 - Left view&lt;br /&gt;
* Numpad 7 - Top view&lt;br /&gt;
* Ctrl+Numpad 7 - Bottom view&lt;br /&gt;
* Numpad2/4/6/8: Rotate view&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Newmodelviewer&amp;diff=402</id>
		<title>Newmodelviewer</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Newmodelviewer&amp;diff=402"/>
		<updated>2012-12-12T03:13:45Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Newmodelviewer to Model viewer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Model viewer]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Model_viewer&amp;diff=400</id>
		<title>Model viewer</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Model_viewer&amp;diff=400"/>
		<updated>2012-12-12T03:13:29Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To enter modelviewer mode, launch the game with:&lt;br /&gt;
&lt;br /&gt;
 pioneer -mv &amp;lt;optional model name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Hotkeys =&lt;br /&gt;
&lt;br /&gt;
Esc: Quit&lt;br /&gt;
&lt;br /&gt;
Tab: Toggle UI&lt;br /&gt;
&lt;br /&gt;
PrintScr: Screenshot&lt;br /&gt;
&lt;br /&gt;
Space: Reset camera view + thruster sliders&lt;br /&gt;
&lt;br /&gt;
G: Cycle grid mode&lt;br /&gt;
&lt;br /&gt;
R: Randomize colour sliders&lt;br /&gt;
&lt;br /&gt;
Z: Toggle wireframe mode&lt;br /&gt;
&lt;br /&gt;
Camera view presets are like Blender:&lt;br /&gt;
&lt;br /&gt;
* Numpad 1 - Front view&lt;br /&gt;
* Ctrl+Numpad - Rear view&lt;br /&gt;
* Numpad 3 - Right view&lt;br /&gt;
* Ctrl+Numpad 3 - Left view&lt;br /&gt;
* Numpad 7 - Top view&lt;br /&gt;
* Ctrl+Numpad 7 - Bottom view&lt;br /&gt;
* Numpad2/4/6/8: Rotate view&lt;br /&gt;
&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Network_features&amp;diff=395</id>
		<title>Network features</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Network_features&amp;diff=395"/>
		<updated>2012-12-04T17:49:00Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Idea Network features to Network features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Whilst actual multiplayer won't ever be in the game, it should be possible to include some network code to enrich the game.&lt;br /&gt;
&lt;br /&gt;
= Bulletin board stories, news articles =&lt;br /&gt;
&lt;br /&gt;
These could be provided to the game via RSS, which as a standard provides enough for this level of enrichment.  A central server would be provided, with the Pioneer development community in general creating new content.  This content would be periodically loaded by the game, for display on bulletin boards, as newspapers, in specific stations, etc.&lt;br /&gt;
&lt;br /&gt;
Content would either be undated, for immediate display, or tagged with a range of in-game dates.  This does mean that the data set to download would grow over time, to allow players who start a new game to see fictional news articles appear in a timely order.  Downloading the entire set does mean that older articles can be corrected later.&lt;br /&gt;
&lt;br /&gt;
The feature could be switched off or set to a different source of data through the config file.&lt;br /&gt;
&lt;br /&gt;
= Additional mission information =&lt;br /&gt;
&lt;br /&gt;
Similar to the above, this would offer new mission information data.  The missions would have to already exist in the game, and be written to expect data from this source.  Such data would be start variables, mission text objects and so on.&lt;br /&gt;
&lt;br /&gt;
= Player messaging =&lt;br /&gt;
&lt;br /&gt;
This would require a network protocol that included uploading; perhaps HTTP post.&lt;br /&gt;
&lt;br /&gt;
Undated messages from players could be committed to a notice board in a specific station, or in every station in a system.  They'd last for some amount of time, the details to be determined when it's implemented.  These messages would pass through a central server (or a player-specified server).  This could allow for communities to appear in given systems, or for players to make treasure trails, or tip-offs about local profitable trade routes, or warnings about difficult systems.  One's imagination here is the limit.&lt;br /&gt;
&lt;br /&gt;
= Leaderboard =&lt;br /&gt;
&lt;br /&gt;
Really just a special case of messaging. Report kills, Elite ranking, military ranks, medals etc to a central server. Display it in game somewhere.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ideas]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Idea_Network_features&amp;diff=396</id>
		<title>Idea Network features</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Idea_Network_features&amp;diff=396"/>
		<updated>2012-12-04T17:49:00Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Idea Network features to Network features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Network features]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Network_features&amp;diff=394</id>
		<title>Network features</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Network_features&amp;diff=394"/>
		<updated>2012-12-04T17:48:51Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Whilst actual multiplayer won't ever be in the game, it should be possible to include some network code to enrich the game.&lt;br /&gt;
&lt;br /&gt;
= Bulletin board stories, news articles =&lt;br /&gt;
&lt;br /&gt;
These could be provided to the game via RSS, which as a standard provides enough for this level of enrichment.  A central server would be provided, with the Pioneer development community in general creating new content.  This content would be periodically loaded by the game, for display on bulletin boards, as newspapers, in specific stations, etc.&lt;br /&gt;
&lt;br /&gt;
Content would either be undated, for immediate display, or tagged with a range of in-game dates.  This does mean that the data set to download would grow over time, to allow players who start a new game to see fictional news articles appear in a timely order.  Downloading the entire set does mean that older articles can be corrected later.&lt;br /&gt;
&lt;br /&gt;
The feature could be switched off or set to a different source of data through the config file.&lt;br /&gt;
&lt;br /&gt;
= Additional mission information =&lt;br /&gt;
&lt;br /&gt;
Similar to the above, this would offer new mission information data.  The missions would have to already exist in the game, and be written to expect data from this source.  Such data would be start variables, mission text objects and so on.&lt;br /&gt;
&lt;br /&gt;
= Player messaging =&lt;br /&gt;
&lt;br /&gt;
This would require a network protocol that included uploading; perhaps HTTP post.&lt;br /&gt;
&lt;br /&gt;
Undated messages from players could be committed to a notice board in a specific station, or in every station in a system.  They'd last for some amount of time, the details to be determined when it's implemented.  These messages would pass through a central server (or a player-specified server).  This could allow for communities to appear in given systems, or for players to make treasure trails, or tip-offs about local profitable trade routes, or warnings about difficult systems.  One's imagination here is the limit.&lt;br /&gt;
&lt;br /&gt;
= Leaderboard =&lt;br /&gt;
&lt;br /&gt;
Really just a special case of messaging. Report kills, Elite ranking, military ranks, medals etc to a central server. Display it in game somewhere.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ideas]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Space_Only_Ships&amp;diff=349</id>
		<title>Space Only Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Space_Only_Ships&amp;diff=349"/>
		<updated>2012-11-14T14:16:45Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A flyable ship that cannot make landfall upon a planet. Something like the Lynx Bulk Carrier, although it doesn't necessarily have to be that large. For whatever gameplay balance reason used, a ship might not be able to land on a surface under gravity, or might not be able to use atmospheric shielding. These could be given advantages to offset the disadvantage.&lt;br /&gt;
&lt;br /&gt;
* The powerful ventral thruster used to take off from a planet need not be quite so powerful.&lt;br /&gt;
* The ship could have a more generous thrust.&lt;br /&gt;
* It could be an interesting shape.&lt;br /&gt;
&lt;br /&gt;
Care would have to be taken that such ships weren't sold from a planet-based shipyard.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ideas]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Space_Only_Ships&amp;diff=347</id>
		<title>Space Only Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Space_Only_Ships&amp;diff=347"/>
		<updated>2012-11-14T14:16:30Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Idea Space Only Ships to Space Only Ships&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A flyable ship that cannot make landfall upon a planet. Something like the Lynx Bulk Carrier, although it doesn't necessarily have to be that large. For whatever gameplay balance reason used, a ship might not be able to land on a surface under gravity, or might not be able to use atmospheric shielding. These could be given advantages to offset the disadvantage.&lt;br /&gt;
&lt;br /&gt;
* The powerful ventral thruster used to take off from a planet need not be quite so powerful.&lt;br /&gt;
* The ship could have a more generous thrust.&lt;br /&gt;
* It could be an interesting shape.&lt;br /&gt;
&lt;br /&gt;
Care would have to be taken that such ships weren't sold from a planet-based shipyard.&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Idea_Space_Only_Ships&amp;diff=348</id>
		<title>Idea Space Only Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Idea_Space_Only_Ships&amp;diff=348"/>
		<updated>2012-11-14T14:16:30Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Idea Space Only Ships to Space Only Ships&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Space Only Ships]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Power_Use_in_Ships&amp;diff=346</id>
		<title>Power Use in Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Power_Use_in_Ships&amp;diff=346"/>
		<updated>2012-11-14T14:14:47Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ship has a power budget. Power is sourced, and used. All power used must be expelled, or will become heat. Here's how that might happen:&lt;br /&gt;
&lt;br /&gt;
A ship provides a given amount of power, measured in Watts. That power source is continually available, and of undetermined origin and nature (solar, nuclear, fairies, hand waves, etc). This power source can be supplemented by additional power sources. Any item of equipment could potentially be a power source.&lt;br /&gt;
&lt;br /&gt;
All equipment requires a certain amount of continual power. If the combined power requirement of all equipment is not met, the most recently powered up items will not function.&lt;br /&gt;
&lt;br /&gt;
All equipment produces waste heat, proportional to its power, and also measured in Watts. A power sink is required to remove this heat. Additional sinks are required to deal with additional powered equipment. Sinks can dispose of heat, or store it, as gameplay, balance and so forth require. Sinks can also dispose of heat introduced externally, through re-entry, solar proximity, combat, etc.&lt;br /&gt;
&lt;br /&gt;
If there are not enough sinks, then hull and/or cabin temperature rises. If there are more than enough, then the temperature falls.&lt;br /&gt;
&lt;br /&gt;
Equipment can be powered down into a standby mode, reducing power requirements and heat production.&lt;br /&gt;
&lt;br /&gt;
Equipment can be powered off, zeroing power requirements and heat production.&lt;br /&gt;
&lt;br /&gt;
Powering up from standby can be done in flight. Powering up from off can only be done whilst docked.&lt;br /&gt;
&lt;br /&gt;
So, each item of equipment has a set of values:&lt;br /&gt;
&lt;br /&gt;
* Power supply (powered on) (Watts)&lt;br /&gt;
* Power supply (standby) (Watts)&lt;br /&gt;
* Power requirement (powered on) (Watts)&lt;br /&gt;
* Power requirement (powered off) (Watts)&lt;br /&gt;
* Power dissipation (powered on) (Watts)&lt;br /&gt;
* Power dissipation (powered off) (Watts)&lt;br /&gt;
* Heat storage (Joules)&lt;br /&gt;
&lt;br /&gt;
and the rest falls into place. Additionally, the ship has:&lt;br /&gt;
&lt;br /&gt;
* Power supply (Watts)&lt;br /&gt;
* Power dissipation (Watts)&lt;br /&gt;
* Heat storage (Joules)&lt;br /&gt;
&lt;br /&gt;
Exceed that heat storage, take damage. Effectively, that's your hull/cabin temp.&lt;br /&gt;
&lt;br /&gt;
A docked ship should have as much power as it needs, as long as it is docked. It should also have as much dissipation as it needs.&lt;br /&gt;
&lt;br /&gt;
A landed ship should perhaps have extra dissipation available, proportional to atmospheric pressure.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ideas]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Escape_Capsules&amp;diff=345</id>
		<title>Escape Capsules</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Escape_Capsules&amp;diff=345"/>
		<updated>2012-11-14T14:14:32Z</updated>

		<summary type="html">&lt;p&gt;Luomu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Escape capsules should deploy automatically, or on demand by the player. Depending on the possibility of multiple ship ownership, the abandoned ship might still be retained as player property, and if there is an autopilot or pilot (see [[Idea Crew|crew]]) on board the player could ask it to land.&lt;br /&gt;
&lt;br /&gt;
Some thoughts about escape capsules:&lt;br /&gt;
&lt;br /&gt;
* If the player ejects, the enemy ships should not in general continue to attack the player, unless they are being attacked as part of a contract killing directed at the player (not a passenger).&lt;br /&gt;
* There should be a small risk that the attacker shows no remorse, and attacks or scoops up the player as slaves (game over).&lt;br /&gt;
* A call for help could result in being scooped up for rescue by a friendly ship (GalCop or otherwise). Player is scooped, then sees the view from the rescue ship as it autopilots to a base. The player cannot interact with or control the rescue ship.&lt;br /&gt;
&lt;br /&gt;
== Escape capsule options ==&lt;br /&gt;
&lt;br /&gt;
There should be more than one brand of escape capsule available. Here is an outline of some possible options:&lt;br /&gt;
&lt;br /&gt;
* Basic escape capsule. No autopilot fitted, low thrust.&lt;br /&gt;
* Advanced escape capsule. Autopilot included, high thrust.&lt;br /&gt;
* Explorer class escape capsule. Fitted with a hyperdrive (perhaps class 0 or range-limited somehow) and the amount of fuel required to use it (probably one tonne).&lt;br /&gt;
* Built-in escape capsule. Whatever type it is, you can't fit another or remove this one. It's an integral component of the ship.&lt;br /&gt;
&lt;br /&gt;
== Insurance policy ==&lt;br /&gt;
&lt;br /&gt;
'''This could be coded in Lua.'''&lt;br /&gt;
&lt;br /&gt;
In Elite and Frontier, escape capsules came with an insurance policy. It might be better if these were bought and maintained separately.&lt;br /&gt;
&lt;br /&gt;
Without an insurance policy, the player is left flying an escape capsule around. The player still has access to his money. Depending on the cost of the insurance, the following terms might be applied:-&lt;br /&gt;
&lt;br /&gt;
* Time. An insurance policy might be valid:&lt;br /&gt;
** Perpetually&lt;br /&gt;
** Until compensation is claimed (ie, the pilot ejects and lands)&lt;br /&gt;
** Until a specified date (one, five or ten years from purchase)&lt;br /&gt;
* Schedule. An insurance policy might replace the escape capsule when the player lands, with the following:&lt;br /&gt;
** A ship of the type that the player was flying at the time of ejection&lt;br /&gt;
** A ship of the type that the player was flying when the player bought the policy&lt;br /&gt;
** A specified ship, regardless of whether the player has ever owned or flown that ship&lt;br /&gt;
** Optionally, compensation for the value of contents in the hold&lt;br /&gt;
** Optionally, provision of temporary skeleton crew (see [[Idea Crew|crew]] indenture).&lt;br /&gt;
&lt;br /&gt;
== Escape capsules that don't contain the player ==&lt;br /&gt;
&lt;br /&gt;
A player should be able to scoop up an escape capsule. On scooping, the player should choose whether to keep the occupant captive (becomes 1t slaves, as in Frontier) or to rescue the occupant. A rescued pilot can be delivered to any spaceport, and on landing will thank the player. There is a non-zero chance of compensation or faction reputation change. An additional option is that the rescued party might join the crew, if there is space on board.&lt;br /&gt;
&lt;br /&gt;
=== Multiple escape pods ===&lt;br /&gt;
&lt;br /&gt;
Large ships may have the capacity for numerous escape pods (perhaps of varying types). As the ship gets damaged, crew may elect to eject in pods. Pods of varying types may accept various numbers of crew (including the player) and may take a certain amount of time to launch - this allows fleeing crew to 'double up'; a pod that is preparing to launch will fill up before crew get into empty pods. It is entirely possible that pods are not left for the player.&lt;br /&gt;
&lt;br /&gt;
=== Passengers ===&lt;br /&gt;
&lt;br /&gt;
Passenger cabins could (or should?) double up as escape capsules. Perhaps onlt the more expensive ones; this might affect a passenger's willingness to travel with the player's ship, and would certainly affect the player's reputation in the event of catastrophe.&lt;br /&gt;
&lt;br /&gt;
== Persistent ships / hulks / wrecks ==&lt;br /&gt;
&lt;br /&gt;
Ejecting does not destroy the parent ship. Some ships may be towed and reclaimed or redocked with and possibly flown. A ship might contonie to operate after the player ejects, if it has a competent crew.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ideas]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Power_Use_in_Ships&amp;diff=343</id>
		<title>Power Use in Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Power_Use_in_Ships&amp;diff=343"/>
		<updated>2012-11-14T14:14:10Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Idea Power Use in Ships to Power Use in Ships&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ship has a power budget. Power is sourced, and used. All power used must be expelled, or will become heat. Here's how that might happen:&lt;br /&gt;
&lt;br /&gt;
A ship provides a given amount of power, measured in Watts. That power source is continually available, and of undetermined origin and nature (solar, nuclear, fairies, hand waves, etc). This power source can be supplemented by additional power sources. Any item of equipment could potentially be a power source.&lt;br /&gt;
&lt;br /&gt;
All equipment requires a certain amount of continual power. If the combined power requirement of all equipment is not met, the most recently powered up items will not function.&lt;br /&gt;
&lt;br /&gt;
All equipment produces waste heat, proportional to its power, and also measured in Watts. A power sink is required to remove this heat. Additional sinks are required to deal with additional powered equipment. Sinks can dispose of heat, or store it, as gameplay, balance and so forth require. Sinks can also dispose of heat introduced externally, through re-entry, solar proximity, combat, etc.&lt;br /&gt;
&lt;br /&gt;
If there are not enough sinks, then hull and/or cabin temperature rises. If there are more than enough, then the temperature falls.&lt;br /&gt;
&lt;br /&gt;
Equipment can be powered down into a standby mode, reducing power requirements and heat production.&lt;br /&gt;
&lt;br /&gt;
Equipment can be powered off, zeroing power requirements and heat production.&lt;br /&gt;
&lt;br /&gt;
Powering up from standby can be done in flight. Powering up from off can only be done whilst docked.&lt;br /&gt;
&lt;br /&gt;
So, each item of equipment has a set of values:&lt;br /&gt;
&lt;br /&gt;
* Power supply (powered on) (Watts)&lt;br /&gt;
* Power supply (standby) (Watts)&lt;br /&gt;
* Power requirement (powered on) (Watts)&lt;br /&gt;
* Power requirement (powered off) (Watts)&lt;br /&gt;
* Power dissipation (powered on) (Watts)&lt;br /&gt;
* Power dissipation (powered off) (Watts)&lt;br /&gt;
* Heat storage (Joules)&lt;br /&gt;
&lt;br /&gt;
and the rest falls into place. Additionally, the ship has:&lt;br /&gt;
&lt;br /&gt;
* Power supply (Watts)&lt;br /&gt;
* Power dissipation (Watts)&lt;br /&gt;
* Heat storage (Joules)&lt;br /&gt;
&lt;br /&gt;
Exceed that heat storage, take damage. Effectively, that's your hull/cabin temp.&lt;br /&gt;
&lt;br /&gt;
A docked ship should have as much power as it needs, as long as it is docked. It should also have as much dissipation as it needs.&lt;br /&gt;
&lt;br /&gt;
A landed ship should perhaps have extra dissipation available, proportional to atmospheric pressure.&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Idea_Power_Use_in_Ships&amp;diff=344</id>
		<title>Idea Power Use in Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Idea_Power_Use_in_Ships&amp;diff=344"/>
		<updated>2012-11-14T14:14:10Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Idea Power Use in Ships to Power Use in Ships&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Power Use in Ships]]&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.pioneerspacesim.net/index.php?title=Escape_Capsules&amp;diff=341</id>
		<title>Escape Capsules</title>
		<link rel="alternate" type="text/html" href="https://wiki.pioneerspacesim.net/index.php?title=Escape_Capsules&amp;diff=341"/>
		<updated>2012-11-14T14:14:02Z</updated>

		<summary type="html">&lt;p&gt;Luomu: moved Idea Escape Capsules to Escape Capsules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Escape capsules should deploy automatically, or on demand by the player. Depending on the possibility of multiple ship ownership, the abandoned ship might still be retained as player property, and if there is an autopilot or pilot (see [[Idea Crew|crew]]) on board the player could ask it to land.&lt;br /&gt;
&lt;br /&gt;
Some thoughts about escape capsules:&lt;br /&gt;
&lt;br /&gt;
* If the player ejects, the enemy ships should not in general continue to attack the player, unless they are being attacked as part of a contract killing directed at the player (not a passenger).&lt;br /&gt;
* There should be a small risk that the attacker shows no remorse, and attacks or scoops up the player as slaves (game over).&lt;br /&gt;
* A call for help could result in being scooped up for rescue by a friendly ship (GalCop or otherwise). Player is scooped, then sees the view from the rescue ship as it autopilots to a base. The player cannot interact with or control the rescue ship.&lt;br /&gt;
&lt;br /&gt;
== Escape capsule options ==&lt;br /&gt;
&lt;br /&gt;
There should be more than one brand of escape capsule available. Here is an outline of some possible options:&lt;br /&gt;
&lt;br /&gt;
* Basic escape capsule. No autopilot fitted, low thrust.&lt;br /&gt;
* Advanced escape capsule. Autopilot included, high thrust.&lt;br /&gt;
* Explorer class escape capsule. Fitted with a hyperdrive (perhaps class 0 or range-limited somehow) and the amount of fuel required to use it (probably one tonne).&lt;br /&gt;
* Built-in escape capsule. Whatever type it is, you can't fit another or remove this one. It's an integral component of the ship.&lt;br /&gt;
&lt;br /&gt;
== Insurance policy ==&lt;br /&gt;
&lt;br /&gt;
'''This could be coded in Lua.'''&lt;br /&gt;
&lt;br /&gt;
In Elite and Frontier, escape capsules came with an insurance policy. It might be better if these were bought and maintained separately.&lt;br /&gt;
&lt;br /&gt;
Without an insurance policy, the player is left flying an escape capsule around. The player still has access to his money. Depending on the cost of the insurance, the following terms might be applied:-&lt;br /&gt;
&lt;br /&gt;
* Time. An insurance policy might be valid:&lt;br /&gt;
** Perpetually&lt;br /&gt;
** Until compensation is claimed (ie, the pilot ejects and lands)&lt;br /&gt;
** Until a specified date (one, five or ten years from purchase)&lt;br /&gt;
* Schedule. An insurance policy might replace the escape capsule when the player lands, with the following:&lt;br /&gt;
** A ship of the type that the player was flying at the time of ejection&lt;br /&gt;
** A ship of the type that the player was flying when the player bought the policy&lt;br /&gt;
** A specified ship, regardless of whether the player has ever owned or flown that ship&lt;br /&gt;
** Optionally, compensation for the value of contents in the hold&lt;br /&gt;
** Optionally, provision of temporary skeleton crew (see [[Idea Crew|crew]] indenture).&lt;br /&gt;
&lt;br /&gt;
== Escape capsules that don't contain the player ==&lt;br /&gt;
&lt;br /&gt;
A player should be able to scoop up an escape capsule. On scooping, the player should choose whether to keep the occupant captive (becomes 1t slaves, as in Frontier) or to rescue the occupant. A rescued pilot can be delivered to any spaceport, and on landing will thank the player. There is a non-zero chance of compensation or faction reputation change. An additional option is that the rescued party might join the crew, if there is space on board.&lt;br /&gt;
&lt;br /&gt;
=== Multiple escape pods ===&lt;br /&gt;
&lt;br /&gt;
Large ships may have the capacity for numerous escape pods (perhaps of varying types). As the ship gets damaged, crew may elect to eject in pods. Pods of varying types may accept various numbers of crew (including the player) and may take a certain amount of time to launch - this allows fleeing crew to 'double up'; a pod that is preparing to launch will fill up before crew get into empty pods. It is entirely possible that pods are not left for the player.&lt;br /&gt;
&lt;br /&gt;
=== Passengers ===&lt;br /&gt;
&lt;br /&gt;
Passenger cabins could (or should?) double up as escape capsules. Perhaps onlt the more expensive ones; this might affect a passenger's willingness to travel with the player's ship, and would certainly affect the player's reputation in the event of catastrophe.&lt;br /&gt;
&lt;br /&gt;
== Persistent ships / hulks / wrecks ==&lt;br /&gt;
&lt;br /&gt;
Ejecting does not destroy the parent ship. Some ships may be towed and reclaimed or redocked with and possibly flown. A ship might contonie to operate after the player ejects, if it has a competent crew.&lt;/div&gt;</summary>
		<author><name>Luomu</name></author>
		
	</entry>
</feed>