1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
---|
2 | <html> |
---|
3 | <head> |
---|
4 | <title>OGRE XSI Exporter Readme</title> |
---|
5 | <meta http-equiv="Content-Type" |
---|
6 | content="text/html; charset=iso-8859-1"> |
---|
7 | <style type="text/css">body { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; color: black; background-color: white} |
---|
8 | a:link { color: #003300; text-decoration: underline} |
---|
9 | a:hover { color: #F5BC52; text-decoration: underline} |
---|
10 | a:visited { color: #004400; text-decoration: underline} |
---|
11 | li { color: #003300; list-style-type: diamond; position: relative; left: -15px; clip: rect( )} |
---|
12 | td { font-size: 10pt} |
---|
13 | th { font-size: 10pt} |
---|
14 | |
---|
15 | .header { font-weight: bold; font-size: 12pt; } |
---|
16 | .MainHeader { font-weight: bold; color: white; background-color: #6b7d6b; font-size: 10pt} |
---|
17 | .BorderHeader { background-color: #999900; font-size: 8pt; font-weight: bold; color: #F5BC52; text-align: center} |
---|
18 | .MainContent { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt } |
---|
19 | .BorderContent { font-size: 8pt; color: #66CC33; border-color: black #666600 #666600; |
---|
20 | padding-top: 2px; padding-right: 2px; padding-bottom: 10px; padding-left: 2px; |
---|
21 | margin-bottom: 2px; border-style: solid; |
---|
22 | border-top-width: 0px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px} |
---|
23 | .NewsDate { font-weight: bold} |
---|
24 | .Annotation { font-size: 10px} |
---|
25 | |
---|
26 | H1, H2, H3 { |
---|
27 | background-color: #6b7d6b; |
---|
28 | color: white; |
---|
29 | padding: 2px; |
---|
30 | padding-left: 5px; |
---|
31 | border-style: solid; |
---|
32 | border-width: 1px; |
---|
33 | border-color: black; |
---|
34 | } |
---|
35 | |
---|
36 | H1 { |
---|
37 | text-align: center; |
---|
38 | } |
---|
39 | H2 { |
---|
40 | } |
---|
41 | H3 { |
---|
42 | FONT-FAMILY: trebuchet ms,helvetica,arial; |
---|
43 | } |
---|
44 | pre { |
---|
45 | background-color: #eeffee; |
---|
46 | color: black; |
---|
47 | padding: 5px; |
---|
48 | } |
---|
49 | td.example { |
---|
50 | border-style: solid; |
---|
51 | border-width: 1px; |
---|
52 | border-color: black; |
---|
53 | } |
---|
54 | dt { color: #3D653D; font-weight: bold;} |
---|
55 | |
---|
56 | A.qindex {} |
---|
57 | A.qindexRef {} |
---|
58 | A.el { text-decoration: none; font-weight: bold } |
---|
59 | A.elRef { font-weight: bold } |
---|
60 | A.code { text-decoration: none; font-weight: normal; color: Blue } |
---|
61 | A:visited.code { text-decoration: none; font-weight: normal; color: Navy } |
---|
62 | A:hover.code { text-decoration: underline; font-weight: normal; color: Blue } |
---|
63 | A.codeRef { font-weight: normal; color: #4444ee } |
---|
64 | DL.el { margin-left: -1cm } |
---|
65 | DIV.fragment { width: 100%; border: none; background-color: #003300 } |
---|
66 | DIV.ah { color: white; background-color: black; margin-bottom: 3; margin-top: 3 } |
---|
67 | DIV.groupHeader { margin-left: 16; margin-top: 12; margin-bottom: 6; font-weight: bold } |
---|
68 | DIV.groupText { margin-left: 16; font-style: italic; font-size: smaller } |
---|
69 | FONT.keyword { color: #008000 } |
---|
70 | FONT.keywordtype { color: #999920 } |
---|
71 | FONT.keywordflow { color: #e0FF00 } |
---|
72 | FONT.comment { color: #009900 } |
---|
73 | FONT.preprocessor { color: #809020 } |
---|
74 | FONT.stringliteral { color: #002080 } |
---|
75 | FONT.charliteral { color: #008080 } |
---|
76 | .ex { |
---|
77 | FONT-SIZE: 8pt; FONT-FAMILY: tahoma |
---|
78 | } |
---|
79 | CODE.keywordtype { |
---|
80 | COLOR: #00ccff |
---|
81 | } |
---|
82 | CODE.keyword { |
---|
83 | FONT-WEIGHT: bold; COLOR: #00ccff |
---|
84 | } |
---|
85 | CODE.fn { |
---|
86 | COLOR: white; |
---|
87 | FONT-WEIGHT: bold; |
---|
88 | } |
---|
89 | CODE.var { |
---|
90 | COLOR: #dcdcdc; |
---|
91 | } |
---|
92 | CODE.macro { |
---|
93 | COLOR: #809020; |
---|
94 | FONT-WEIGHT: bold; |
---|
95 | } |
---|
96 | CODE.comm { |
---|
97 | COLOR: lime |
---|
98 | } |
---|
99 | |
---|
100 | CODE.num { |
---|
101 | COLOR: purple |
---|
102 | } |
---|
103 | CODE.str { |
---|
104 | COLOR: #ffcc33; |
---|
105 | font-style: italic |
---|
106 | } |
---|
107 | </style> |
---|
108 | </head> |
---|
109 | <body> |
---|
110 | <p class="header" align="center">OGRE (Object-Oriented Graphics |
---|
111 | Rendering Engine)</p> |
---|
112 | <p class="header" align="center">XSI Exporter README file</p> |
---|
113 | <p class="header" align="center"><a href="http://www.ogre3d.org">http://www.ogre3d.org</a></p> |
---|
114 | <p class="MainHeader" align="left"><a name="top"></a>Summary</p> |
---|
115 | <p>OGRE (Object-Oriented Graphics Rendering Engine) is a |
---|
116 | scene-oriented, flexible 3D engine written in C++ designed to make it |
---|
117 | easier and more intuitive for developers to produce games and demos |
---|
118 | utilising 3D hardware. The class library abstracts all the details of |
---|
119 | using the underlying system libraries like Direct3D and OpenGL and |
---|
120 | provides an interface based on world objects and other intuitive |
---|
121 | classes. </p> |
---|
122 | <p>This distribution contains the files required to export OGRE |
---|
123 | .mesh, .skeleton and .material files from <a |
---|
124 | href="http://www.softimage.com">SoftImage|XSI</a>. Currently supported XSI versions are 4.x and 5.x<br> |
---|
125 | </p> |
---|
126 | <p><span style="font-weight: bold;">IMPORTANT</span>: This exporter |
---|
127 | only works with a <span style="font-weight: bold;">full version</span> |
---|
128 | of XSI (Foundation or better). It will not work with the trial version.<br> |
---|
129 | </p> |
---|
130 | <a href="#install">How To Install</a><br> |
---|
131 | <a href="#features">Features</a><br> |
---|
132 | <a href="#using">How To Use</a><br> |
---|
133 | <a href="#tips">Tips</a><br> |
---|
134 | <a href="#changelog">Change Log</a><br> |
---|
135 | <p><br> |
---|
136 | </p> |
---|
137 | <p class="MainHeader" align="left"><a name="install"></a>How to Install</p> |
---|
138 | <p>If you are using the installer, you don't need to do anything except |
---|
139 | to run it and point it at your XSI folder. If you're installing from |
---|
140 | source, you need to do the following:<br> |
---|
141 | </p> |
---|
142 | <ul> |
---|
143 | <li>copy devil.dll, ilu.dll, ilut.dll and zlib1.dll into |
---|
144 | $(XSI_ROOT)\Application\bin, or make sure they are somewhere on your |
---|
145 | path</li> |
---|
146 | <li>copy OgreMain.dll (and OgreMain_d.dll if you wish to use the |
---|
147 | debug version anytime) into $(XSI_ROOT)\Application\bin</li> |
---|
148 | <li>copy OgreXSIExporter.dll into $(XSI_ROOT)\Application\plugins</li> |
---|
149 | </ul> |
---|
150 | <a href="#top">Back To Top</a><br> |
---|
151 | <p class="MainHeader" align="left"><a name="features"></a>Features</p> |
---|
152 | <p>The following features are supported:<br> |
---|
153 | </p> |
---|
154 | <ol> |
---|
155 | <li>Exporting selected PolygonMesh objects direct to the OGRE binary |
---|
156 | .mesh format</li> |
---|
157 | <li>Exports vertex position, normals, multiple UV sets and vertex |
---|
158 | colours<br> |
---|
159 | </li> |
---|
160 | <li>Polygon clusters used to change materials in a single PolygonMesh |
---|
161 | are exported as separate SubMeshes</li> |
---|
162 | <li>By default, separate PolygonMesh objects which use the same |
---|
163 | material are merged for efficiency</li> |
---|
164 | <li>Mesh vertices are index-organised for efficiency</li> |
---|
165 | <li>Exporting of up to 4 weighted bone assignments per vertex <br> |
---|
166 | </li> |
---|
167 | <li>Generation of edge lists, tangent vectors, and LOD levels during |
---|
168 | export (optional)<br> |
---|
169 | </li> |
---|
170 | <li>Exporting of deformers (bone chains, nulls used as deformers) |
---|
171 | direct to binary .skeleton format<br> |
---|
172 | </li> |
---|
173 | <li>Exporting of one or more ActionSources directly as animations , |
---|
174 | or sampled (IK conversion)<br> |
---|
175 | </li> |
---|
176 | <li>Exporting of RealTime shaders on materials (OpenGL and DirectX)</li> |
---|
177 | </ol> |
---|
178 | <a href="OGREXSI_Readme.html#top">Back To Top</a> |
---|
179 | <p class="MainHeader" align="left"><a name="using"></a>How To Use<br> |
---|
180 | </p> |
---|
181 | It's a simple case of selecting the objects you wish to export, and |
---|
182 | clicking File > Export > OGRE Mesh / Skeleton... to bring up the |
---|
183 | OGRE export dialog.<br> |
---|
184 | <img alt="page1" src="page1.gif" |
---|
185 | style="width: 464px; height: 477px;"><br> |
---|
186 | <br> |
---|
187 | The first page of the exporter is concerned with the basic mesh export |
---|
188 | settings. <br> |
---|
189 | <span style="font-weight: bold;"><br> |
---|
190 | <span class="newsdate">Object(s) to export:</span> </span>This |
---|
191 | is pre-populated with your current selection<br> |
---|
192 | <span style="font-weight: bold;"><span class="newsdate">Mesh:</span> |
---|
193 | </span>This is the .mesh file to export - you must complete this. Once |
---|
194 | you have selected a file, by default the other file-related fields in |
---|
195 | the exporter will be completed for you based on the same filename |
---|
196 | pattern.<br> |
---|
197 | <span style="font-weight: bold;"><span class="newsdate">Merge |
---|
198 | objects with the same material?:</span> </span>If this is checked, all |
---|
199 | polygon mesh objects with the same material will be merged into one for |
---|
200 | efficiency. Most of the time you want this; but if you want more |
---|
201 | control over the splitting of your SubMesh objects, deselect it.<br> |
---|
202 | <span style="font-weight: bold;"><span class="newsdate">Calculate |
---|
203 | Edge Lists:</span> </span>Select this if you want your mesh to support |
---|
204 | stencil shadows. This increases the size of the resulting .mesh object.<br> |
---|
205 | <span style="font-weight: bold;"><span class="newsdate">Calculate |
---|
206 | Tangents:</span> </span>Select this if you wish to use normal mapping |
---|
207 | or some other technique which requires tangents vectors.<br> |
---|
208 | <span style="font-weight: bold;"><span class="newsdate"></span></span><span |
---|
209 | style="font-weight: bold;"><span class="newsdate">Levels |
---|
210 | of Detail:</span> </span>Increase this value above 0 if you want lower |
---|
211 | LODs to be generated for this mesh. The rest of the parameters control |
---|
212 | how the mesh is reduced.<br> |
---|
213 | <span style="font-weight: bold;"><span class="newsdate"></span></span><span |
---|
214 | style="font-weight: bold;"><span class="newsdate"></span></span><br> |
---|
215 | <span style="font-weight: bold;"><span class="newsdate"></span></span><img |
---|
216 | alt="page2" src="page2.gif" |
---|
217 | style="width: 464px; height: 477px;"><br> |
---|
218 | <br> |
---|
219 | <span style="font-weight: bold;"><span class="newsdate">Export |
---|
220 | Materials:</span> </span>Whether to export a .material script or not. |
---|
221 | The field underneath contains the name of the script to export, and is |
---|
222 | pre-populated based on the .mesh selection on the first page.<br> |
---|
223 | <span style="font-weight: bold;"><span class="newsdate">Material |
---|
224 | Prefix:</span> </span>Optional prefix to give the name of each |
---|
225 | material.<br> |
---|
226 | <span style="font-weight: bold;"><span class="newsdate"></span></span><span |
---|
227 | style="font-weight: bold;"><span class="newsdate">Copy |
---|
228 | Textures To Folder:</span> </span>If selected, any textures referenced |
---|
229 | in your materials will be copied into the same folder as the .material |
---|
230 | script.<br> |
---|
231 | <span style="font-weight: bold;"><span class="newsdate"></span></span><br> |
---|
232 | <span style="font-weight: bold;"><span class="newsdate"></span></span><img |
---|
233 | alt="page3" src="page3.gif" |
---|
234 | style="width: 464px; height: 477px;"><br> |
---|
235 | <br> |
---|
236 | <span style="font-weight: bold;"><span class="newsdate">Export |
---|
237 | Skeleton:</span> </span>If checked, skeleton and animation will be |
---|
238 | exported. Cannot be selected if no skeleton is referenced by this mesh. |
---|
239 | The field underneath determines the target.skeleton file (pre-populated |
---|
240 | based on the mesh name).<br> |
---|
241 | <span style="font-weight: bold;"><span class="newsdate">Frames |
---|
242 | per second:</span> </span>How to translate XSI frames into time |
---|
243 | values. Will be populated based on XSI's playback speed, but you can |
---|
244 | alter it if you wish.<br> |
---|
245 | <span style="font-weight: bold;"><span class="newsdate">Animations:</span> |
---|
246 | </span>This is a list of Actions which you've already saved. The fields |
---|
247 | are as follows:<br> |
---|
248 | <span class="newsdate">Name:</span> </span>The name of the |
---|
249 | Action, which will become the name of the animation<br> |
---|
250 | <span style="font-weight: bold;"><span class="newsdate">Export?:</span> |
---|
251 | </span>Whether to export this animation (checked by default)<br> |
---|
252 | <span style="font-weight: bold;"><span class="newsdate">Sample?:</span> |
---|
253 | </span>Animation which is based on Inverse Kinematics (IK) or other |
---|
254 | constraints needs to be 'sampled' to turn it into Forward Kinematics |
---|
255 | (FK) in OGRE. If your animation includes IK or other constraints you <span |
---|
256 | style="font-weight: bold;">must</span> leave this option enabled. Only |
---|
257 | if you are certain your Action is comprised entirely of FK, with no |
---|
258 | other constraints in force, should you disable this option. If in |
---|
259 | doubt, leave it enabled.<br> |
---|
260 | <span style="font-weight: bold;"><span class="newsdate">Sample |
---|
261 | Interval:</span> </span>The number of frames between each sample, if |
---|
262 | sampling is enabled. <br> |
---|
263 | <a |
---|
264 | href="OGREXSI_Readme.html#top">Back To Top</a><br> |
---|
265 | <br> |
---|
266 | <p class="MainHeader" align="left"><a name="tips"></a>Tips<br> |
---|
267 | </p> |
---|
268 | <p>Important modelling / animating considerations:<br> |
---|
269 | </p> |
---|
270 | <ol> |
---|
271 | <li>The exporter writes one SubMesh per material if 'Merge objects |
---|
272 | with the same material' is selected. If unselected, you get one SubMesh |
---|
273 | per PolygonMesh (or clusters with differing materials within them)<br> |
---|
274 | </li> |
---|
275 | <li>The exporter writes all your export settings into a custom |
---|
276 | property in your scene, meaning that all your preferences are |
---|
277 | remembered for this scene, even between loads.<br> |
---|
278 | </li> |
---|
279 | <li>The exporter only exports PolygonMesh objects, so if you work |
---|
280 | with higher-order surfaces like NURBS you must create a PolygonMesh |
---|
281 | object from these surfaces before exporting</li> |
---|
282 | <li>The exporter writes a single .mesh at a time and combines all the |
---|
283 | objects selected (and their children, if you select that option)</li> |
---|
284 | <li>All global modelling coordinates are preserved, so the origin of |
---|
285 | your resulting .mesh will be where the world origin is in XSI<br> |
---|
286 | </li> |
---|
287 | <li>Animations must be stored in ActionSource instances (Animate > |
---|
288 | Actions > Store) to be exported. Any work-in-progress animation will |
---|
289 | not be picked up<br> |
---|
290 | </li> |
---|
291 | <li>You can make your animations smaller by turning them into FK |
---|
292 | beforehand, and thus avoid fixed-rate sampling. This is somewhat tricky |
---|
293 | to do properly, and you can't typically have IK and FK actions |
---|
294 | functioning on the same model. If you're not sure, keep the 'Sample?' |
---|
295 | option checked for your animations, since it's the simplest way to make |
---|
296 | sure the animations look right in OGRE.</li> |
---|
297 | </ol> |
---|
298 | Important material considerations:<br> |
---|
299 | <ul> |
---|
300 | <li>The defaults that XSI gives to some real time material components |
---|
301 | are not normally what you'd want (and not the OGRE default). For |
---|
302 | example:</li> |
---|
303 | <ul> |
---|
304 | <li>OGLDraw and DXDraw objects have a default culling mode of |
---|
305 | 'None', meaning all materials are double-sided by default, you will |
---|
306 | probably want to change that for efficiency</li> |
---|
307 | <li>OGLTexture and DXTexture both default to no mip mapping. You |
---|
308 | will probably want to alter the defaults so that you have at least |
---|
309 | sampled point mipmapping (in DXTexture this is a separate setting, in |
---|
310 | OGLTexture it's combined with the minification filter)</li> |
---|
311 | </ul> |
---|
312 | </ul> |
---|
313 | <a href="OGREXSI_Readme.html#top">Back To Top</a> |
---|
314 | <p class="MainHeader" align="left"><a name="changelog"></a>Change Log<br> |
---|
315 | </p> |
---|
316 | <p style="font-weight: bold;">1.0.6a<br> |
---|
317 | </p> |
---|
318 | <ul> |
---|
319 | <li>Significant optimisation allowing larger meshes to be exported quicker (approx 15x faster per 1,000 faces than 1.0.6).</li> |
---|
320 | </ul> |
---|
321 | <p style="font-weight: bold;">1.0.6<br> |
---|
322 | </p> |
---|
323 | <ul> |
---|
324 | <li>Don't export clusters that become empty because triangles have been assigned to other clusters to customise material ID</li> |
---|
325 | <li>Fix vertex bone assignments on vertices on the boundary of multiple clusters</li> |
---|
326 | <li>Added XSI v5 support</li> |
---|
327 | </ul> |
---|
328 | <p style="font-weight: bold;">1.0.5<br> |
---|
329 | </p> |
---|
330 | <ul> |
---|
331 | <li>Fix export of multiple animations where initial pose is different</li> |
---|
332 | <li>Material prefix should apply to the exported .mesh as well as the .material</li> |
---|
333 | </ul> |
---|
334 | <p style="font-weight: bold;">1.0.3<br> |
---|
335 | </p> |
---|
336 | <ul> |
---|
337 | <li>Don't crash if textures are not found, just warn |
---|
338 | instead.</li> |
---|
339 | <li>Trap cases where too many texture coordinate sets |
---|
340 | are used and terminate with error, rather than crash<br> |
---|
341 | </li> |
---|
342 | </ul> |
---|
343 | <p style="font-weight: bold;"><br> |
---|
344 | 1.0.1c<br> |
---|
345 | </p> |
---|
346 | <ul> |
---|
347 | <li>Added material exporting</li> |
---|
348 | <li>Added animation sampling (handle IK, other constraints seamlessly)</li> |
---|
349 | <li>Fixed vertex output format for software skinning</li> |
---|
350 | <li>Fixed a problem with translation keyframes</li> |
---|
351 | <li>Added optimisation of resulting animations (eliminate identity |
---|
352 | tracks, collapse identical keyframes)</li> |
---|
353 | <li>Fixed frame -> time conversion with varying Action bases</li> |
---|
354 | <li>Reorganised GUI a little</li> |
---|
355 | <li>Deal with case-insensitive fcurve references</li> |
---|
356 | <li>Linux build fixes<br> |
---|
357 | </li> |
---|
358 | </ul> |
---|
359 | <p><a href="OGREXSI_Readme.html#top">Back To Top</a></p> |
---|
360 | <p class="MainHeader" align="left">Reporting Issues<br> |
---|
361 | </p> |
---|
362 | <p>Please report any issues with the exporter in the <a |
---|
363 | href="http://www.ogre3d.org/phpBB2">OGRE Forums</a>.</p> |
---|
364 | <p> <a href="OGREXSI_Readme.html#top">Back To Top</a></p> |
---|
365 | </body> |
---|
366 | </html> |
---|