1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4<meta http-equiv="Content-Style-Type" content="text/css">
5<title>ctr_BannerModelConverter</title>
6<style type="text/css">
7<!--
8body {
9/*
10    font-size       : 10pt;
11*/
12    font-weight     : normal;
13    color           : #000000;
14    margin          : 8px;
15}
16div {
17    width           : 98%;
18    white-space     : nowrap;
19}
20div.title {
21    text-align      : left;
22    font-weight     : bold;
23*
24    font-size       : 16pt;
25*/
26    font-size       : 150%;
27    color           : #202020;
28    border-style    : double;
29    border-width    : 8px;
30    /* タイトルを囲む枠線の色を指定 */
31    border-color    : #FF6600;
32    /* RVLプラットフォーム系列 */
33/*
34    border-color    : #34beed;
35*/
36    /* TWLプラットフォーム系列 */
37/*
38    border-color    : #ff458f;
39*/
40    margin          : 4px;
41    padding         : 4px;
42}
43H1 {
44  font-size   : 150%;
45  font-family   : Arial;
46  border-bottom-width : 5px;
47  border-bottom-style : solid;
48  border-bottom-color : #FF6600;
49  padding-bottom    : 1px;
50  margin-bottom   : 20px;
51  letter-spacing    : normal;
52  font-weight   : bold;
53}
54h2 {
55    font-weight     : bold;
56/*
57    font-size       : 16pt;
58*/
59    font-size       : 150%;
60    border-style    : none none solid double;
61    border-width    : 0px 0px 2px 8px;
62    /* 見出しの線の色を指定 */
63    border-color    : #FF6600;
64    /* RVLプラットフォーム系列 */
65/*
66    border-color    : #34beed;
67*/
68    /* TWLプラットフォーム系列 */
69/*
70    border-color    : #ff458f;
71*/
72    margin-left     : 2px;
73    padding-left    : 4px;
74}
75CODE {
76  font-family   : "Courier New", monospace;
77  position    : normal;
78  left      : 12px;
79  font-size   : 10pt;
80}
81table {
82  margin-top        : 2pt;
83  margin-bottom     : 2pt;
84  margin-left       : 0pt;
85  margin-right      : 0pt;
86  padding-left      : 0pt;
87  padding-right     : 0pt;
88  position          : relative;
89  left              : 12px;
90  font-family       : Arial;
91  font-size         : 10pt;
92  border-style      : none none none none;
93}
94td,th {
95  padding           : 2pt;
96  border-width      : 2pt;
97  border-style      : none none none none;
98  font-style        : normal;
99  text-align        : left;
100}
101td {
102  background        : #e8f4f4;
103  font-weight       : normal;
104}
105th {
106  background        : #c0d8d8;
107  font-weight       : bold;
108}
109p {
110    margin-left     : 4px;
111}
112p.code {
113  font-family   : "Courier New", monospace;
114  position    : normal;
115  left      : 12px;
116  font-size   : 10pt;
117  background            : #e8f4f4;
118}
119    .style1
120    {
121        color: #800000;
122        font-weight: bold;
123    }
124    .style2
125    {
126        font-size: xx-small;
127    }
128-->
129</style>
130</head>
131<body>
132<a name="top"></a> <!-- ※注意事項 --> <!--  ・(任意)となっているものは、記載が無くても問題ありません。 --> <!--  ・各項目についてる(必須)や(任意)は、作成後に削除してください。 --> <!--  ・各項目内の書き方は、パッケージごとに自由で問題ありませんが、同じパッケージ内で違いがでないようにしてください。 --> <!--  ・タグはすべて小文字、終了タグを持たないものは「/>」で閉じてください。--> <!--  ・HTMLコードのインデントは、各種社内コード規約と同様にスペース4文字か4文字幅のタブになるようにしてください-->
133<h1>ctr_BannerModelConverter</h1>
134<h1>Table of Contents</h1>
135<ol>
136<li><a href="#intro">Introduction</a></li>
137<li><a href="#usage">How to Use</a></li>
138<li><a href="#summary">Banner Overview</a></li>
139<li><a href="#input">Input Directory Structure</a></li>
140<li><a href="#restrict">File Restrictions</a></li>
141<li><a href="#history">Revision History</a></li>
142</ol>
143<h2><a name="intro">Introduction</a></h2>
144<P>The <CODE>ctr_BannerModelConverter</CODE> tool is used to create CBMD (CTR binary banner model) files.<BR>CBMD files are created based on the specified folder structure.</P>
145<P>The resulting CBMD file can be used with the <CODE>makebanner</CODE> BSF files. </P>
146<P class="style1">To create model data and sound data, use <CODE>NW4C_ForBanner</CODE> (a separate package to create banner data).<br /> Conversion of data created with <CODE>NW4C</CODE> for application development may yield unexpected results.</P>
147<h2><a name="usage">How to Use</a></h2>
148<h3>What's Required</h3>
149<p>You need the following files to create a CBMD file:</p>
150<li>Intermediate files output by NW4C CreativeStudio.</li>
151</ul>
152<h3>Commands</h3>
153<p class="code">
154% ctr_BannerModelConverter DIRECTORYNAME [Output]
155</p>
156<p class="first_ja">The <CODE>DIRECTORYNAME</CODE> specification is required. All other options are optional.</p>
157<h4 >Options</h4>
158<div class="table">
159<table border="1">
160<thead>
161<tr>
162<th align="center">Options</th>
163<th align="center">Description</th>
164</tr>
165</thead>
166<tbody>
167<tr>
168<td align="center">DIRECTORYNAME </td>
169<td align="center">Specifies the input directory name. Be sure to use the specified directory structure (described later).</td>
170</tr>
171<tr>
172<td align="center">Output</td>
173<td align="center">Specifies the file to output. If omitted, a file with the <CODE>cbmd</CODE> extension added to the originally input filename is output.</td>
174</tr>
175</tbody>
176</table>
177</div>
178<h2><a name="summary">Banner Overview</a></h2>
179<p>A banner is model data displayed in the upper screen when an application is selected.<BR>Banners are used to show a line-up of miniature target applications on the menu.</p>
180    <p>
181<img alt="banner" src="image/ctr_BannerModelConverter_00.png" style="width: 400px; height: 240px" /></p>
182<h2><a name="input">Input Directory Structure</a></h2>
183<p>Banner model data can be divided into one of two main categories: Model data common to all languages, and data especially intended for each separate region and language combination. <BR>Make sure to use a directory structure as given below. Specify the Banner folder at the top in <CODE>DIRECTORYNAME</CODE> on the command line.</p>
184<p class="code">
185Banner ━┳━ COMMON ━┳━ COMMON.cmdl<br /> ┃       ┣━ COMMON.cskla<br /> ┃       ┣━ COMMON.cmata<br /> ┃       ┣━ COMMON.cenv<br /> ┃       ┣━ COMMON.clts<br /> ┃       ┗━ Textures ━┓<br /> ┃                ┣━ COMMON1.ctex<br /> ┃                ┣━ COMMON2.ctex<br /> ┃                ┣━ COMMON3.ctex<br /> ┃<br /> ┣━ JPN_JP ━┳━ JPN_JP.cmdl<br /> ┃       ┣━ JPN_JP.cskla<br /> ┃       ┣━ JPN_JP.cmata<br /> ┃       ┣━ JPN_JP.cenv<br /> ┃       ┣━ JPN_JP.clts<br /> ┃       ┗━ Textures ━┓<br /> ┃                ┣━ COMMON1.ctex (Data for swapping)<br /> ┃                ┣━ …<br /> ┃                ┣━ TEX1.ctex (arbitrary name)<br /> ┃                ┣━ TEX2.ctex (arbitrary name)<br /> ┃                ┣━ TEX3.ctex (arbitrary name)<br /> ┃                ┣━ …<br /> ┣━ …<br /> ┣━ …</p>
186<p>
187・The <CODE>COMMON</CODE> folder is a required item. The content of the other folders is arbitrary, but these folders must exist. If there is no content, you must create empty folders.<br />Be sure that the file names inside the <CODE>COMMON</CODE> folder are of the format <CODE>COMMON.cmdl</CODE>.<br /><br />・If you place textures with names like <CODE>COMMON1.ctex</CODE> inside the <CODE>Textures</CODE> folders for the various language-specific data, the textures with the same names stored inside <CODE>COMMON</CODE> can be swapped with the various language textures for display.<br /><br /> ・For the various other language-specific data besides texture data, use that language when naming the data (such as <CODE>JPN_JP.cmdl</CODE>).<br /> The naming can be arbitrary for textures to which data swapping does not apply.<br />
188</p>
189<div class="table">
190  <table border="1">
191<thead>
192<tr>
193<th align="center">Name</th>
194<th align="center">
195Region</th>
196<th align="center">
197Language</th>
198</thead>
199<tbody>
200<tr>
201<td align="center">COMMON</td>
202<td align="center">All regions</td>
203<td align="center">All Languages</td>
204</tr>
205<tr>
206<td align="center">EUR_EN </td>
207<td align="center">Europe</td>
208<td align="center">British English </td>
209</tr>
210<tr>
211<td align="center">EUR_FR</td>
212<td align="center">Europe</td>
213<td align="center">French</td>
214</tr>
215<tr>
216<td align="center">EUR_GE</td>
217<td align="center">Europe</td>
218<td align="center">German</td>
219</tr>
220<tr>
221<td align="center">EUR_IT</td>
222<td align="center">Europe</td>
223<td align="center">Italian</td>
224</tr>
225<tr>
226<td align="center">EUR_DU</td>
227<td align="center">Europe</td>
228<td align="center">Dutch</td>
229</tr>
230<tr>
231<td align="center">EUR_PO</td>
232<td align="center">Europe</td>
233<td align="center">Portuguese</td>
234</tr>
235<tr>
236<td align="center">EUR_RU</td>
237<td align="center">Europe</td>
238<td align="center">Russian</td>
239</tr>
240<tr>
241<td align="center">EUR_SP</td>
242<td align="center">Europe</td>
243<td align="center">Spanish</td>
244</tr>
245<tr>
246<td align="center">JPN_JP </td>
247<td align="center">Japan</td>
248<td align="center">Japanese</td>
249</tr>
250<tr>
251<td align="center">USA_EN </td>
252<td align="center">The Americas</td>
253<td align="center">North American English</td>
254</tr>
255<tr>
256<td align="center">USA_FR </td>
257<td align="center">The Americas</td>
258<td align="center">French (Canada)</td>
259</tr>
260<tr>
261<td align="center">USA_SP </td>
262<td align="center">The Americas</td>
263<td align="center">Spanish (Latin America)</td>
264</tr>
265<tr>
266<td align="center">USA_PO </td>
267<td align="center">The Americas</td>
268<td align="center">Portuguese (Brazil)</td>
269</tr>
270</tbody>
271</table>
272</div>
273<h2><a name="restrict">Data Restrictions</a></h2>
274<p>The following restrictions apply to banner model data.<br /><B>Note:</B> The numeric values in the explanations below are the numbers from Creative Studio.</p>
275<p class="style1"><B>Note:</B> These restrictions are provisional. These specifications are subject to change in the future.</p>
276<h3>Camera Restrictions</h3>
277<p>
278The camera is fixed. Cannot be adjusted for each individual application.<br /><B>Note:</B> Cameras placed inside banner data can only be used for projection mapping.
279</p>
280<div class="table">
281    <table border="1">
282        <tr style="BACKGROUND: #eee">
283            <th>
284Camera position x, y, z</th>
285            <th>
286Look-at point  x, y, z</th>
287            <th>
288Angles of view (fovy)</th>
289            <th>
290near/far</th>
291            <th>
292Depth Level*</th>
293            <th>
294Factor*</th>
295        </tr>
296        <tr style="BACKGROUND: #fff">
297            <td>
298                0.0 / 1.0 / 44.786
299    </td>
300            <td>
301    0.0 / 1.0 / 0.0</td>
302            <td>
303                30</td>
304            <td>
305                26.5 / 1000</td>
306          <td>
30734.786<br /><B>* Note:</B> The screen level is +10 from the origin.</td>
308            <td>
309          1.0</td>
310        </tr>
311    </table>
312 </div>
313<p>
314<B>Note:</B> These are the <CODE>depthLevel</CODE> and <CODE>factor</CODE> values used by the <CODE>ulcd::CalculateMatrices</CODE> function.
315<h3>Model Size and Rendering Range Restrictions</h3>
316<p>
317Any parts that extend past the range shown in the figure are hidden by the system.<br /><B>Note:</B> The blender's stencil test is used to apply a mask based on a hidden ellipsoid model.<br />(For this reason, stencil tests cannot be used on the model side. The setting is overwritten on the system side.)
318</p>
319    <p>
320<img alt="banner" src="image/ctr_BannerModelConverter_01.png" style="width: 400px; height: 240px" /></p>
321<div class="table">
322  <table border="1">
323    <tr style="BACKGROUND: #eee">
324<th> Mask ellipsoid size X/Y/Z</th>
325    </tr>
326    <tr style="BACKGROUND: #fff">
327<td> Diameter 18 / Diameter 9.5 / Diameter 18 <br /> <br /><B>Note:</B> Use the center of the ellipsoid as the origin and create the model in this range.</td>
328    </tr>
329  </table>
330</div>
331<h3>Restrictions on Model Y-Axis Rotation</h3>
332    <p>
333Models rotate once in 600 frames (10 seconds at 60 fps) at constant velocity to the left for a viewer facing the screen. - Rotation accelerates if the user blows into the microphone.</p>
334    <p>
335<B>Note:</B> Use billboard settings for nodes you do not want to be rotated.<BR><B>Note:</B> Although these nodes do not normally turn if rotated to the right at constant speed for 600f, they will rotate if the user blows into the microphone. </p>
336<h3>Restrictions on Intermediate Files</h3>
337<p>There are restrictions on data by design and to prevent skipped frames.<BR> <B>Note:</B> Data that violates these restrictions generates an error during conversion. (Not implemented)<BR>Even if the data is within the restrictions, the data size must be reduced if skipped frames occur. (Described later.)
338</p>
339<div class="table">
340<table border="1">
341<thead>
342<tr>
343<th align="center">Extension</th>
344<th align="center">
345◎: Required<br />○: Optional<br />×: Not supported</th>
346<th align="center">Data restrictions on [Data common to all languages] + [Data for a single language] </th>
347</tr>
348</thead>
349<tbody>
350<tr>
351<td align="center">cmdl</td><td align="center">◎</td>
352<td align="center">Number of polygons: <B>3000 or less</B><BR>Number of bones: <B>5 or less</B><BR>Number of materials: <B>5 or less</B><br />Layer configurations: <B>0</B>, <B>1</B>, <B>2</B>, or <B>3</B> (<B>Note:</B> Limited to those with one cycle.)<BR><B>Stencil test unavailable</B>: Used for masking with an ellipse.</td>
353</tr>
354<tr>
355<td align="center">ctex </td>
356<td align="center">O</td>
357<td align="center">There is no limit on the number of textures as long as the size does not exceed the limit.</td>
358</tr>
359<tr>
360<td align="center">cskla </td>
361<td align="center">O</td>
362<td align="center">Create a looped animation of 600 frames or less.</td>
363</tr>
364<tr>
365<td align="center">cmata </td>
366<td align="center">O</td>
367<td align="center">Create a looped animation of 600 frames or less.</td>
368</tr>
369<tr>
370<td align="center">cenv </td>
371<td align="center">O</td>
372<td align="center">Number of lights (3 or less)<BR>Number of cameras (3 or less)<BR>Number of fogs (1 or less)</td>
373</tr>
374<tr>
375<td align="center">clts </td>
376<td align="center">O</td>
377<td align="center">Number of tables (3 or less)</td>
378</tr>
379<tr>
380<td align="center">cptl </td>
381<td align="center">X</td>
382<td align="center">Particles are not supported.</td>
383</tr>
384<tr>
385<td align="center">csdr </td>
386<td align="center">X</td>
387<td align="center">User shaders are not supported. (The default shader is used.)</td>
388</tr>
389<tr>
390<td align="center">clgt </td>
391<td align="center">X</td>
392<td align="center">Store lights in <CODE>cenv</CODE>. Animation is not supported.</td>
393</tr>
394<tr>
395<td align="center">ccam </td>
396<td align="center">X</td>
397<td align="center">Store projection map cameras in cenv. Animation is not supported.</td>
398</tr>
399<tr>
400<td align="center">cmdla </td>
401<td align="center">X</td>
402<td align="center">Does not support visibility animations of models.</td>
403</tr>
404<tr>
405<td align="center">cres </td>
406<td align="center">X</td>
407<td align="center">Merged files are not supported to support localization needs to switch resources. </td>
408</tr>
409<tr>
410<td align="center">Other </td>
411<td align="center">X</td>
412<td align="center">There are no plans to support other intermediate file extensions that may be added in the future.(2010.12.09)</td>
413</tr>
414</tbody>
415</table>
416</div>
417<h3>Restriction on Data Size</h3>
418<p>The following restrictions have been placed on data size after conversion.<BR><B>Note:</B> Data that violates these restrictions generates an error during conversion.
419</p>
420<div class="table">
421<table border="1">
422<thead>
423<tr>
424<th align="center">Data capacity restrictions on [Data common to all languages] + [Data for a single language]</th>
425<th align="center">Data capacity restrictions on [Data common to all languages] + [All language-specific data]<br/>(Data capacity restrictions for banner files (<CODE>*.bnr</CODE>), including sound data)</th>
426</tr>
427</thead>
428<tbody>
429<tr>
430<td align="center"><B>256KB</B> for <B>Binary size</B><br /><br /><B>Note:</B> You can check this using <B>Save as binary</B> from the <B>File</B> menu from NW4C Creative Studio.</td>
431<td align="center"><B>1MB</B> for <B>Size after compression</B><br /><br /><B>Note:</B> There are no absolute rules for how much the size decreases with compression, but if you meet the above restrictions it is unlikely that you will violate this restriction.</td>
432</tr>
433</tbody>
434</table>
435</div>
436<h2><a name="restrict">Processing Limits on the HOME Menu</a></h2>
437<h3>How to Check Processing on the HOME Menu</h3>
438<p>
439<br/>Pressing &quot;X+Y&quot; on the HOME Menu for developers displays debug commands.
440</p>
441<p>
442- Check processing in the display state shown below.
443</p>
444<p>
445<img alt="banner" src="image/ctr_BannerModelConverter_02.png" style="width: 448px; height: 500px" />
446</p>
447<div class="table">
448<table border="1">
449<thead>
450<tr>
451<th align="center">Number of drawings</th>
452<th align="center">Description</th>
453</tr>
454</thead>
455<tbody>
456<tr>
457<td align="center">【1】</td>
458<td align="center">Turn off the wireless switch on the right side of the system.</td>
459</tr>
460<tr>
461<td align="center">【2】</td>
462<td align="center">From the top, the region name and language name, HOME Menu build timestamp, and HOME Menu version are displayed.</td>
463</tr>
464<tr>
465<td align="center">【3】</td>
466<td align="center">These processing bars used to check processing.<br/>From the top, the maximum processing load per 1f indicator (fixed), CPU processing load indicator, and GPU processing load indicator are displayed.<br/> <B>Note:</B> The details are described later.</td>
467</tr>
468<tr>
469<td align="center">【4】</td>
470<td align="center">The lower screen displays items that can be checked in the order: &quot;Health and Safety Information,&quot; &quot;Applications to check processing,&quot; &quot;3DS Cameras,&quot; &quot;3DS Sounds.&quot; <B>Note:</B> Put the system into a state that does not display the new arrival icon.</td>
471</tr>
472</tbody>
473</table>
474</div>
475<p>
476- The Processing Bars
477</p>
478<p>
479<img alt="banner" src="image/ctr_BannerModelConverter_03.png" style="width: 448px; height: 84px" />
480</p>
481<p>
482Neither the CPU nor GPU may exceed the processing limit of 80%. In addition, processing must not exceed the processing limit of 80% even by 1f for 600f while the banner is rotating.
483</p>
484<div class="table">
485<table border="1">
486<thead>
487<tr>
488<th align="center">Bar Colors</th>
489<th align="center">Description</th>
490</tr>
491</thead>
492<tbody>
493<tr>
494<td align="center"><font color="#00FF00">■</font> Green</td>
495<td align="center">The processing load is in the okay zone. There is no need to reduce processing.</td>
496</tr>
497<tr>
498<td align="center"><font color="#FFFF00">■</font> Yellow</td>
499<td align="center">The bar turns yellow (caution) if the processing load goes over 75%. There is no need to reduce processing.</td>
500</tr>
501<tr>
502<td align="center"><font color="#FF0000">■</font> Red</td>
503<td align="center">The bar turns red (warning) if the processing load goes over 80%. Reduce processing.</td>
504</tr>
505</tbody>
506</table>
507</div>
508<p>
509Processing bars must be kept in the states indicated as okay below.
510</p>
511<p>
512<img alt="banner" src="image/ctr_BannerModelConverter_04.png" style="width: 384px; height: 164px" />
513</p>
514<h3>[Reference] How to Handle Processing Overflow</h3>
515<p>
516Effective measures of reducing CPU processing are:<br/>・Reducing the number of bones<br/>・Reducing the number of vertices, etc.
517</p>
518<p>
519Effective measures of reducing GPU processing are:<br/>・Reducing texture capacity<br/>・Reducing the number of textures<br/>・Applying mipmaps to textures<br/>・Reducing the area to be rendered for translucent polygons, etc.
520</p>
521</p>
522<h2><a name="history">Revision History</a></h2>
523    <dl class="history">
524      <dt>2011/01/05</dt>
525<dd>Added text regarding handling of CENV, CLGT, and CCAM files to <B>Data Restrictions</B>.<br />
526      <dt>2010/12/30</dt>
527<dd>Fixed a bug that caused incorrect checking of the data capacity restriction.<br />
528      <dt>2010/12/28</dt>
529<dd>Clarified that the supporting version of NW4C is 1.2.<br />
530      <dt>2010/12/25</dt>
531<dd>An error is now generated during conversion when the data violate the restrictions on data capacity.<br />
532      <dt>2010/12/09</dt>
533<dd>Added information on the processing limit on the HOME Menu and how to check processing.<br />Added the fact that cmdla is not supported.
534      <dt>2010/12/07</dt>
535<dd>Changed CSKLA and CMATA frame restriction from a 600-frame animation to an animation of no more than 600 frames.<br />
536      <dt>2010/11/26</dt>
537<dd>Fixed bug where language folders containing empty files would not be properly converted.<br />
538      <dt>2010/11/19</dt>
539<dd>Deleted <B>Sound file restrictions</B> (moved this section to <CODE>ctr_makebanner</CODE>).<br />
540      <dt>2010/11/13</dt>
541<dd>Modified <B>Restrictions on data size</B> (revised the text to <B>256KB</B> for <B>Banner size</B>.<br />Supplemented other <B>Data Restrictions</B> items.<br />
542      <dt>2010/10/09</dt>
543<dd>Supplemented the restrictions for sound files and data capacity.<br />
544      <dt>2010/09/28</dt>
545<dd>Initial version.<br />
546      </dd>
547    </dl>
548<hr><p>CONFIDENTIAL</p></body>
549</html>
550