<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_2_subsect_1"  />
<title>rulinux.net - Статьи - General</title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Статьи - General</title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>vim. [^б^е^с]полезные настройки</title>
<link>https://rulinux.net/message.php?newsid=42727&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=42727&amp;page=1</guid>
<pubDate>Sun, 06 Nov 2016 16:43:34 +0300</pubDate>
<description><![CDATA[<p>немножко про правописание и hex-ы. если позволите. <br><br>vim умеет очешуительно проверять написание этого вашего рюсскага йезыка и магёт hex. можно хрюкнуть и vim-ом поправить бутлоадер. внезапно и неожиданно. <fieldset><legend>bash</legend><div class="highlight bash">&nbsp;<span class="kw2">vim</span> <span class="sy0">/</span>dev<span class="sy0">/</span>sda &nbsp;</div></fieldset> рисуем в ~/.vimrc:<br /> <fieldset><legend>vim</legend><div class="highlight vim">&nbsp;<br />
<span class="kw1">function</span> EditHexMode<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp;<span class="kw1">if</span> <span class="sy0">!</span><span class="kw3">exists</span><span class="br0">&#40;</span><span class="st0">&quot;b:editHex&quot;</span><span class="br0">&#41;</span> <span class="sy0">||</span> <span class="sy0">!</span>b<span class="sy0">:</span>editHex<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setlocal binary<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">let</span> b<span class="sy0">:</span>editHex=1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">%!</span>xxd<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;converted to Hex mode&quot;</span><br />
&nbsp; &nbsp;<span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setlocal nobinary<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">let</span> b<span class="sy0">:</span>editHex=0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">%!</span>xxd <span class="sy0">-</span>r<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;converted back to binary format&quot;</span><br />
&nbsp; &nbsp;<span class="kw1">endif</span><br />
endfunc<br />
<br />
<span class="kw3">map</span> <span class="sy0">&lt;</span>F4<span class="sy0">&gt;</span> <span class="sy0">&lt;</span>Esc<span class="sy0">&gt;:</span><span class="kw1">call</span> EditHexMode<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span> </div></fieldset><br><br>тыкаем &lt;F4&gt;, прушечка и ! PROFIT ! . утилита &quot;xxd&quot; - в стандартной поставке vim. POSIX и Unix-way - йо!<br><br>грамотно пейсать рюсскага йэзыкка - задачка чуток сложней. vim использует отдельный словарь на каждый язык и кодировку. необходимые словари он качает с <a href="http://ftp.vim.org/vim/runtime/spell/README.txt">офсайта</a> сам. пример: <fieldset><legend>bash</legend><div class="highlight bash">&nbsp;<span class="sy0">&gt;</span> <span class="kw2">ls</span> ~<span class="sy0">/</span>.vim<span class="sy0">/</span>spell<br />
en.utf-8.spl &nbsp;en.utf-8.sug &nbsp;ru.cp1251.spl &nbsp;ru.cp1251.sug &nbsp;ru.koi8-r.spl &nbsp;ru.koi8-r.sug &nbsp;ru.utf-8.spl &nbsp;ru.utf-8.sug &nbsp;</div></fieldset> на том же офсайте можно конкретно <a href="http://vimdoc.sourceforge.net/htmldoc/spell.html">пофтыкать</a> за это дело, если влом набрать  <fieldset><legend>vim</legend><div class="highlight vim">&nbsp;<span class="sy0">:</span>help spell &nbsp;</div></fieldset> рисуем в ~/.vimrc:<br /> <fieldset><legend>vim</legend><div class="highlight vim">&nbsp;<br />
<span class="kw1">function</span> ChangeSpellLang<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="sy0">&amp;</span>spelllang =<span class="sy0">~</span> <span class="st0">&quot;ru,en&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setlocal spell spelllang=<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setlocal nospell<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;spelllang: off&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setlocal spell spelllang=ru,<span class="kw1">en</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;spelllang: ru,en&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">endif</span><br />
endfunc<br />
<span class="co1">&quot; map spell on/off for English/Russian</span><br />
<span class="kw3">map</span> <span class="sy0">&lt;</span>F10<span class="sy0">&gt;</span> <span class="sy0">&lt;</span>Esc<span class="sy0">&gt;:</span><span class="kw1">call</span> ChangeSpellLang<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<br />
set spell spelllang=<br />
set nospell &nbsp;</div></fieldset><br><br>в последних двух линиях использован &quot;set&quot; вместо &quot;setlocal&quot;, чтобы vim не стартовал проверку автоматом при добавлении буферов. тыкаем &lt;F10&gt;, прёмся. правим ашипки и упячки. наводим курсор на бяку, набираем &quot;z=&quot;, выбираем няшечку из списка.<br><br>вступаем в секту &quot;Граммар-Наци&quot; и спускаем word-о-пидоров в говно, где им самое место! ня! </p>]]></description>
</item>
<item>
<title>баян: vim и multibyte encoding</title>
<link>https://rulinux.net/message.php?newsid=42726&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=42726&amp;page=1</guid>
<pubDate>Sat, 05 Nov 2016 16:17:28 +0300</pubDate>
<description><![CDATA[<p>жевание соплей по работе с различными кодировками файлов в vim. кто прошарен - идёт лесом или пишет Ъ камменты. остальным - можно пофтыкать, можно не фтыкать, можно аффтару стчку на телефон или обложить аффтара хуями. можно и не обкладывать, аффтар не абидицца.<br><br>цимес в том, что vim-у кодировка редактируемого файла не важна, а встречается всяко-разное. при сбое автоопределения единицы позволяют указывать кодировку файла вручную. соответственно задача редактирования файла в исходной кодировке порой требует наличия мозгов в межплечевой жопе. что не может не радовать.<br><br>типовые утилиты для работы с кодировками:<br><br>$ recode<br /> $ iconv<br /> $ enca<br /> $ chardet или же chardetect.py<br><br>последний позволяет &quot;угадывать&quot; возможные варианты кодировок. must have. <br><br>открываем vim, печатаем:<br /> <fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="sy0">:</span>h enc &nbsp;<br />
&nbsp;</div></fieldset> &quot; можно и нужно читать. читать не просто так, а пройти по всем &quot;ссылкам&quot;. даёт понять как vim работает с кодировками и что для этого использует. если очень грубо &quot;просуммировать&quot; - получим следующие четыре &quot;внутренних&quot; переменных vim, позволяющих худо-бедно оперировать кодировками. важно учитывать опции сборки vim (+multi_byte) и понимать, что: &quot;The conversion is done with iconv() or as specified with 'charconvert'.&quot;(ц)(vim). <br><br><fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="sy0">:</span>set encoding &nbsp;<span class="st0">&quot; &nbsp;показывает в какой кодировке vim работает по умолчанию (именно сейчас)<br />
:set termencoding &nbsp;&quot;</span> &nbsp;показывает в какой кодировке vim ожидает работу своего терминала<br />
<span class="sy0">:</span>set fileencoding &nbsp;<span class="st0">&quot; &nbsp;показывает в какой кодировке vim открыл рабочий файл<br />
:set fileencodings &nbsp;&quot;</span> &nbsp;показывает список кодировок, в которых vim ожидает найти соответствующую открываемому файлу<span class="sy0">.</span> первая <span class="st0">&quot;подходящая&quot;</span> принимается в работу<span class="sy0">.</span> следствие<span class="sy0">:</span> если первой стоит <span class="st0">&quot;latin1&quot;</span>, то про <span class="st0">&quot;угадывание&quot;</span> кодировок забываем<span class="sy0">.</span> именно тут корни многих ошибок в правильном определении кодировки рабочего файла<span class="sy0">.</span> <br />
&nbsp;</div></fieldset> допустим, что vim работает в UTF-8 окружении. пример записей в ~/.vimrc: <fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="co1">&quot; рабочая кодировка</span><br />
set encoding=utf<span class="sy0">-</span><span class="nu0">8</span><br />
<span class="co1">&quot; кодировка терминала</span><br />
set termencoding=utf<span class="sy0">-</span><span class="nu0">8</span><br />
<span class="co1">&quot; список кодировок файлов для автоопределения</span><br />
set fileencodings=ucs<span class="sy0">-</span>bom,utf<span class="sy0">-</span><span class="nu0">8</span>,cp1251,koi8<span class="sy0">-</span>r,iso<span class="sy0">-</span><span class="nu0">8859</span><span class="sy0">-</span><span class="nu0">5</span>,cp866,ucs<span class="sy0">-</span><span class="nu0">2</span>,ucs<span class="sy0">-</span>2le,utf<span class="sy0">-</span><span class="nu0">16</span>,utf<span class="sy0">-</span>16le,latin1<br />
&nbsp;</div></fieldset> fileencoding определяет сам vim, исходя из результатов записей в ~/.vimrc : UTF - лехко, а из 8-ми битных кодировок корректно отобразит лишь cp1251 (windows-1251). при открытии koi8-r,iso-8859-5,cp866 и прочего &quot;не юникода&quot; весьма вероятен фейл. по сути всё просто: если кракозябры на экране - сравниваем/проверяем кодировку файла с кодировкой, которую &quot;угадал&quot; vim (точнее не угадал). просим vim открыть файл в другой кодировке. в редких случаях - меняем кодировку терминала. пример:<br><br>$ vim current_file<br><br>ыПРЧЕММУ<br /> 4 ЙАМС<br /> тбуртпдбцб<br><br><fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="sy0">:</span>set fileencoding<br />
&nbsp; &nbsp; &nbsp; &nbsp; fileencoding=cp1251<br />
<span class="sy0">:!</span>chardetect<span class="sy0">.</span>py <span class="sy0">%</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; current_file<span class="sy0">:</span> KOI8<span class="sy0">-</span>R with confidence <span class="nu0">0.476283037726</span><br />
<span class="sy0">:</span>e <span class="sy0">++</span>enc=koi8<span class="sy0">-</span>r<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">!!!</span> &nbsp;PROFIT &nbsp;<span class="sy0">!!!</span><br />
&nbsp;</div></fieldset> Шопвеллс<br /> 4 июля<br /> РАСПРОДАЖА<br><br>можно в ~/.vimrc всю рутину с перекодировкой оформить в виде меню. пример:<br><br><fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="co1">&quot;&lt;F7&gt; EOL format (dos &lt;CR&gt;&lt;NL&gt;,unix &lt;NL&gt;,mac &lt;CR&gt;) &nbsp;&quot; &nbsp;определяем/меняем формат строк файла</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu EOL<span class="sy0">.</span>current <span class="sy0">:</span>set fileformat<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu EOL<span class="sy0">.</span>unix <span class="sy0">:</span>set fileformat=unix<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu EOL<span class="sy0">.</span>dos &nbsp;<span class="sy0">:</span>set fileformat=dos<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu EOL<span class="sy0">.</span>mac &nbsp;<span class="sy0">:</span>set fileformat=mac<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F7<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu EOL<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
<br />
<span class="co1">&quot;&lt;F6&gt; Change termencoding &nbsp;&quot; &nbsp;выставляем кодировку терминала</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>current &nbsp; &nbsp;<span class="sy0">:</span>set termencoding<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>cp1251 &nbsp; &nbsp; <span class="sy0">:</span>set termencoding=cp1251<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>koi8<span class="sy0">-</span>r &nbsp; &nbsp; <span class="sy0">:</span>set termencoding=koi8<span class="sy0">-</span>r<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>iso<span class="sy0">-</span>8859<span class="sy0">-</span>5 <span class="sy0">:</span>set termencoding=iso<span class="sy0">-</span>8859<span class="sy0">-</span>5<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>cp866 &nbsp; &nbsp; &nbsp;<span class="sy0">:</span>set termencoding=ibm866<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>utf<span class="sy0">-</span>8 &nbsp; &nbsp; &nbsp;<span class="sy0">:</span>set termencoding=utf<span class="sy0">-</span>8<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>ucs<span class="sy0">-</span>2le &nbsp; &nbsp;<span class="sy0">:</span>set termencoding=ucs<span class="sy0">-</span>2le<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F6<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu tEnc<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
<br />
<span class="co1">&quot;&lt;F8&gt; Change encoding &nbsp; &quot; &nbsp; здесь мы задаём рабочую (текущую) кодировку для vim</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>current &nbsp; &nbsp;<span class="sy0">:</span>set enc<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>cp1251 &nbsp; &nbsp; <span class="sy0">:</span>set encoding=cp1251<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>koi8<span class="sy0">-</span>r &nbsp; &nbsp; <span class="sy0">:</span>set encoding=koi8<span class="sy0">-</span>r<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>iso<span class="sy0">-</span>8859<span class="sy0">-</span>5 <span class="sy0">:</span>set encoding=iso<span class="sy0">-</span>8859<span class="sy0">-</span>5<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>cp866 &nbsp; &nbsp; &nbsp;<span class="sy0">:</span>set encoding=cp866<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>utf<span class="sy0">-</span>8 &nbsp; &nbsp; &nbsp;<span class="sy0">:</span>set encoding=utf<span class="sy0">-</span>8<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>ucs<span class="sy0">-</span>2le &nbsp; &nbsp;<span class="sy0">:</span>set encoding=ucs<span class="sy0">-</span>2le<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F8<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu Enc<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
<br />
<span class="co1">&quot;&lt;F5&gt; Convert file encoding &nbsp; &nbsp;&quot; &nbsp;это меню - для изменения кодировки файлов (перед сохранением)</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>current &nbsp; <span class="sy0">:</span>set fenc<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>cp1251 &nbsp; &nbsp;<span class="sy0">:</span>set fenc=cp1251<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>koi8<span class="sy0">-</span>r &nbsp; &nbsp;<span class="sy0">:</span>set fenc=koi8<span class="sy0">-</span>r<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>iso<span class="sy0">-</span>8859<span class="sy0">-</span>5 <span class="sy0">:</span>set fenc=iso<span class="sy0">-</span>8859<span class="sy0">-</span>5<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>cp866 &nbsp; &nbsp; <span class="sy0">:</span>set fenc=ibm866<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>utf<span class="sy0">-</span>8 &nbsp; &nbsp; <span class="sy0">:</span>set fenc=utf<span class="sy0">-</span>8<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>ucs<span class="sy0">-</span>2le &nbsp; <span class="sy0">:</span>set fenc=ucs<span class="sy0">-</span>2le<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F5<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu Fenc<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
<br />
<span class="co1">&quot; &lt;F9&gt; force read file with different encoding &nbsp;&quot; &nbsp;а здесь мы просим vim открыть файл именно в той кодировке, которая нам нужна</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>cp1251&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=cp1251<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>koi8<span class="sy0">-</span>r&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=koi8<span class="sy0">-</span>r<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>iso<span class="sy0">-</span>8859<span class="sy0">-</span>5&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=iso<span class="sy0">-</span>8859<span class="sy0">-</span>5<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>cp866 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=cp866<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>utf<span class="sy0">-</span>8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=utf<span class="sy0">-</span>8<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>ucs<span class="sy0">-</span>2le &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=ucs<span class="sy0">-</span>2le<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F9<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu ForceEnc<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
&nbsp;</div></fieldset> как-то так.. </p>]]></description>
</item>
<item>
<title> </title>
<link>https://rulinux.net/message.php?newsid=41830&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=41830&amp;page=1</guid>
<pubDate>Sat, 20 Sep 2014 08:06:14 +0400</pubDate>
<description><![CDATA[<p> </p>]]></description>
</item>
<item>
<title> </title>
<link>https://rulinux.net/message.php?newsid=41829&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=41829&amp;page=1</guid>
<pubDate>Sat, 20 Sep 2014 01:18:00 +0400</pubDate>
<description><![CDATA[<p> </p>]]></description>
</item>
<item>
<title> </title>
<link>https://rulinux.net/message.php?newsid=41827&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=41827&amp;page=1</guid>
<pubDate>Fri, 19 Sep 2014 16:56:06 +0400</pubDate>
<description><![CDATA[<p> </p>]]></description>
</item>
<item>
<title>Экспорт анимированных моделей из Blender в Sauerbraten.</title>
<link>https://rulinux.net/message.php?newsid=34862&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=34862&amp;page=1</guid>
<pubDate>Mon, 16 Nov 2009 08:23:00 +0300</pubDate>
<description><![CDATA[<p>Здравствуйте и добро пожаловать в туториал по экспорту анимированных md3/md5mesh из blender. <br>Мы что вы полагем  умеете работать в блендер, и имеете готовую анимированную модель для экспорта в  Sauerbraten. Если это не так, то вы можете взять модель сталкера по рекомендации LGT 2 и  научится делать скелетную анимацию по урокам Андрея Прахова и Александра Супрунова опубликованным в выпусках <a href="http://wiki.linuxformat.ru/index.php/LXF91:Blender">LinuxFormat 87-91</a></p><p>Итак приступим. Откроем blender и загрузим в него имеющуюся у вас модель.
<br><img src="/artimages/animated-md3/1.png"><br>
</p><p>Выберти арматуру и нажмите [Tab] для перехода в режим редактирования. Выберите край кости на конце tag_torso  и переместите курсор на выделенную часть. Выставите родителем тега кость являющуюся стыковой между ногами и туловищем[ctrl-p].  Повторите то-же самое для tag_head. Выставите родителем тега соответствующую кость. Переместите курсор в центр [shift-c]. Установите точку опоры в центр на место курсора [.]. Это позволит повернуть все вокруг центра 3d пространства. Теперь выделите все [a] и поверните по оси z на -90°([r] [z] [90] [-]). <br>Приступим к tag_weapon. Выравнивание данного тега довольно сложная задача. Но сейчас мы научимся трюку выравнивания. Перейдите к кадру анимации на котором персонаж стреляет и его рука с оружием  направлена по оси x. Перейдите в pose mode. Выставите курсор на кончик кости где вы хотите добавить тег. Перейдите к виду сбоку [Num 3] и добавьте пустой tag_weapon. Родитель кости должен быть пустым. Выберите последний кадр анимации. Выберите ноги и tag_torso. И с помощью элемента меню File → Export → Quake3 (.md3)... проэкспортируйте выделенное в md3 файл legs.md3(файл назовите на ваше усмотрение).. <br>Перейдем к туловищу. Перейдите в  object mode. Переместите курсор в центр [shift-c]. Выберите все [a] и выровните tag_torso по центру на место курсора. Убедитесь что точка опоры выровнена по центру[.]. Это позволит вращать арматуру вокруг курсора. Выберите все, кроме tag_torso. Поверните по оси z на 90°([r] [z] [90]), а затем по оси x на 90°([r] [x] [90]).  Выберите меш  тела и все теги и проэкспортируйте в  файл torso.md3(файл назовите на ваше усмотрение). Теперь проэкспортируем голову. Небольшое отличие экспорта меша головы от тела, заключается в том, что вам нужен лишь один кадр. Об анимации головы позаботится md3 тела. Нажмите F10 для перехода на панель Scene, затем откройте вкладку Anim и учбедитесь что Sta: выставлен в  1 и End: выставлен в 1.<br><img src="/artimages/animated-md3/2.png"></p><p>Выберите меш головы, tag_head, и экспортируйте в head.md3 или наподобие. Теперь создайте файл md3.cfg:<br> <i> md3load legs.md3 // модель ног <br>//Здесь указываем скин, масштаб, карты нормалей и пр. md3anim dying 0 30 20  <br>//Далее перечисляем все необходимые анимации <br>md3load torso.md3 // модель туловища <br>//Здесь указываем скин, маски, карты нормалей и пр. <br>md3anim dying 0 30 20 //Так-же как и после загрузки ног перечисляем все необходимые анимации <br>md3load head.md3 // модель головы <br>//Здесь указываем скин, маски, карты нормалей и пр. <br>//При загрузке головы анимации указывать не нужно <br>md3link 0 1 tag_torso //Моделям загруженным с помощью md3load присваивается уникальный ID  <br>md3link 1 2 tag_head //команда md3link обьединяет модели с указанным ID по тегу. <br>//Далее указываем масштаб, specular и прочие не обязательные параметры </i></p><p>Полностью параметры конфигурации формата md3 в Sauerbraten вы можете найти <a href="/view-article.php?aid=69">тут</a>. <br>Как вариант можно экспортировать модель в формат md5mesh. Для экспорта используйте <a href="http://cube.wikispaces.com/file/view/blendermd5_2_09.zip">данный</a> плагин для Blender.  
<br><img src="/artimages/animated-md3/3.jpg"><br>
В этом формате анимации хранятся отдельно от мешей. Название файла меша звучит как имя.md5mesh, а файла анимации как имя.md5anim. Так-же для каждой анимации используется отдельный файл, например idle.md5anim или run.md5anim. Параметры конфигурации md5 аналогичны таковым для формата md3.  Подробнее про параметры конфигурации вы можете прочесть тут.</p><p>Осталось лишь создать файлик preview.jpg разером 512х512 с изображением персонажа и все. <br>Запустим игру и после загрузки карты и выбора модели персонажа перейдем к виду от 3 лица [9]. И если вы все выполнили правильно, то ваша модель в игре будет выглядеть так: 
<br><img src="/artimages/animated-md3/4.jpg">
</p>]]></description>
</item>
<item>
<title>Параметры конфигурации формата obj в Sauerbraten</title>
<link>https://rulinux.net/message.php?newsid=34863&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=34863&amp;page=1</guid>
<pubDate>Fri, 30 Oct 2009 08:22:00 +0300</pubDate>
<description><![CDATA[<p>Формат Wavefront OBJ реализован практически идентично MD3. Единственное отличие OBJ специфичных команд в префиксе &quot;obj&quot; вместо &quot;md3&quot; (т.е. &quot;objskin&quot; вместо &quot;md3skin&quot;). Конфигурационный файл называется &quot;obj.cfg&quot; вместо &quot;md3.cfg&quot;, а модель называется &quot;tris.obj&quot; вместо &quot;tris.md3&quot;. Так-же нет поддержки анимаци (&quot;objanim&quot;) и линковки (&quot;objlink&quot;). Группы имен используются для идентификаци мешей в модели. </p><p>Параметры конфигурации формата md3 вы можете найти <a href="/view-article.php?aid=69">тут</a>.</p>]]></description>
</item>
<item>
<title>Параметры конфигурации формата md3 в Sauerbraten</title>
<link>https://rulinux.net/message.php?newsid=34864&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=34864&amp;page=1</guid>
<pubDate>Fri, 30 Oct 2009 08:15:00 +0300</pubDate>
<description><![CDATA[<p>MD3 файлы могут быть использованы одним из двух способов.</p><p><p align="center"><b><i>Без конфигурации</b></i></p id=\"end{center}\"></p><p>Используйте данный способ если ваша md3 не имеет анимаций (статическая) и имеет всего одну текстуру. MD3 файлы должны располагаться в каталоге packages/models/. В каталоге модели должен располагаться скин (UV текстура, обычно skin.jpg или skin.png) и сама md3(обычно tris.md3). Так-же там может располагаться masks.jpg содержащая specmap в R канале,  glowmap в G канале, и chrome map в B канале. Движок подхватит их автоматически. Если один из файлов не найден, движок будет искать их в родительской директории. Например, если для модели flags/red не найдена tris.md3 в каталоге packages/models/flags/red/, то движок станет искать tris.md3 в каталоге packages/models/flags/. Это позволяет менять скины и геометрию.</p><p><p align="center"><b><i>С конфигурацией</b></i></p id=\"end{center}\"></p><p>Используйте данный способ если ваша md3 анимированная и имеет несколько скинов, или если вы хотите использовать прочие возможности конфигурации. Добавьте md3.cfg в каталог packages/models/. Этот файл определяет загрузку моделей, связи и пр. Следующие команды могут быть использованы в md3.cfg: </p><p><b>md3load P</b></p><p>Эта команда загрузит первую часть вашей модели. Например это может быть head.md3 из модели персонажа. P это путь к модели md3 относительно файла md3.cfg. </p><p><b>md3pitch S O M N</b></p><p>Эта команда определяет как модель реагирует на шаг. Шаг (в градусах) масштабируется S, компенсируется O, а затем фиксируется в диапазоне M..N, т.е. шаг*S + O, M, N. По умолчанию, все части модели имеют S=1, O=0, M=-360, и N=360. </p><p><b>md3skin H S M [E [F]]</b></p><p>Эта команда загрузит текстуру и отнесет ее к последней модели загруженной с помощью md3load. H это название меша на который накладывается текстура. S это путь к текстуре  относительно md3.cfg. M это набор текстур для spec (красный канал)/glow (зеленый канал) карт. Если E не равно нулю, то синий канал маски интерпретируется как chrome  карта. E (максимальная интенсивность envmap) и F (минимальная интенсивность envmap, по умолчанию: 0) значение плавающей точки в диапазоне от 0 до 1, в котором envmapping интенсивность будет варьироваться в зависимости от угла обзора . Интенсивность масштабируется в данном диапазоне, а затем умнажается на chrome map.   <b>md3bumpmap H N [S]</b></p><p>Эта команда включит поддержку карт бампа для заданного меша последней модели загружнееой с помощью md3load. H это название меша на который накладывается  карты бампа. N это текстура карты нормалей. S это путь к текстуре которая (если указано) используется вместо скина наложенного с помощью команды md3skin. Используется только если видеокарта пользователя поддерживает карты бампа, в противном случае скин наложенный с помощью md3skin имеет приимущество. Эти два скина могут быть одинаковыми. Однако скин предназначенный для бампмэппинга практически не имеет теней, в то время как плоские текстуры (без бампа) в целом должны, эта команда позволяет разделить скин для бампмаппинга и плоский.  md3spec MESH S MESH это название меша к которому применяется эффект. S это итненсивность отражений  (если не указано или стоит 0 то принимается значение по умолчанию 100, это хорошо для метала/пластика или чего-то блестящего, низкие значения, например 50 хороши для дерева и пр. , если стоит -1 отражения отключены).</p><p><b>md3alphatest MESH T</b></p><p>MESH это название меша к которому применяется эффект. Команда определяет светотеневой порог T, при котором альфа канал скина будет отбрасывать пиксели с альфой меньше чем T. Т является плавающей точкой в диапазоне от 0 до 1 (по умолчанию: 0.9). </p><p><b>md3alphablend MESH B</b></p><p>MESH это название меша к которому применяется эффект. Controls whether a model with an alpha-channel skin will alpha blend (по умолчанию: 1). </p><p><b>md3shader MESH S</b></p><p>MESH это название меша к которому применяется эффект. S это название шейдера используемого для рендеринга модели (по умолчанию: &quot;stdmodel&quot;). </p><p><b>md3glow MESH G</b></p><p>MESH это название меша к которому применяется эффект. G это масштаб glowmap(карты свечения) ( если не указано или стоит 0 то принимается значение по умолчанию 300, -если стоит -1 свечение отключено), в процентах от цвета скина. </p><p><b>md3glare MESH S G</b></p><p>MESH это название меша к которому применяется эффект. S и G являются плавающими точками указывающими масштаб величины бликов сгенерированных отраженным светом и бликов, соответственно (по умолчанию: 1 1). </p><p><b>md3envmap MESH P</b></p><p>Установка карты окружающей среды для модели. MESH это название меша к которому применяется эффект. P это путь  к карте(синтаксис похож на синтаксис команды &quot;loadsky&quot;) если не указано, то на модель будет наложена карта ближайшего обьекта , или skybox, если карта не определена. </p><p><b>md3ambient MESH A</b></p><p>MESH это название меша к которому применяется эффект. A это процент от общей освещенности(используется для затенения). если не указано или стоит 0 то принимается значение по умолчанию 30%, -1 очначает отсутствие внешнего света. </p><p><b>md3fullbright MESH N</b></p><p>MESH это название меша к которому применяется эффект. N это постоянный принудительно указанный уровень освещения используемый вместо общего. N является плавающей точкой в диапазоне от 0 до 1</p><p><b>md3anim A F N [S [P]]</b></p><p>Эта команда определяет анимацию применяемую к последней загруженной модели (md3load). A  это название анимации. Любая из перечисленных ниже анимаций может быть использована:  <ul> <li>&nbsp;dying  <li>&nbsp;dead  <li>&nbsp;pain  <li>&nbsp;idle  <li>&nbsp;forward  <li>&nbsp;backward  <li>&nbsp;left  <li>&nbsp;right  <li>&nbsp;hold 1 ... hold 7  <li>&nbsp;attack 1 ... attack 7  <li>&nbsp;jump  <li>&nbsp;sink  <li>&nbsp;swim  <li>&nbsp;edit  <li>&nbsp;lag  <li>&nbsp;taunt  <li>&nbsp;win  <li>&nbsp;lose  <li>&nbsp;gun shoot  <li>&nbsp;gun idle  <li>&nbsp;vwep shoot  <li>&nbsp;vwep idle  <li>&nbsp;mapmodel  <li>&nbsp;trigger 
</ul> F это номер кадра с которого начинается анимация. N это количество кадров в анимации. S это количество кадров в секунду. Если не указано или S=0, то 10 FPS используется по умолчанию. P определяет приоритет анимации(по умолчанию P=0).  Модель персонажа может одновременно проигрывать до двух анимаций — первичную анимацию, и вторичную анимацию. Если модели персонажа определена первичная анимация, она будет использована, в противном случае будет использована вторичная, если доступно. Первичные анимации:  <ul> <li>&nbsp;dying  <li>&nbsp;dead  <li>&nbsp;pain  <li>&nbsp;hold 1 ... hold 7  <li>&nbsp;attack 1 ... attack 7  <li>&nbsp;edit  <li>&nbsp;lag  <li>&nbsp;taunt  <li>&nbsp;win  <li>&nbsp;lose 
</ul> Вторичные анимации:  <ul> <li>&nbsp;idle  <li>&nbsp;forward  <li>&nbsp;backward  <li>&nbsp;left  <li>&nbsp;right  <li>&nbsp;jump  <li>&nbsp;sink  <li>&nbsp;swim 
</ul> Это позволяет например, воспроизвести бег со стрельбой. Торс проигрывает &quot;shoot&quot; (первичную анимацию),  а ноги проигрывают &quot;forward&quot; (вторичную анимацию). В случае если вторичная анимация отлична от &quot;idle&quot; и нет первичной анимации, то вторичная анимация  будет вести себя как первичная, а вторичной анимацией будет выступать &quot;idle&quot;.  Однако, если вы хотите определить первичную анимацию для специфичной части, вы можете явно указать приоритет для анимации, и анимация с высшим приоритетом  проиграется раньше вне зависимости от того, является ли анимация первичной или вторичной. Например вы можете выставить анимации приоритет -1 и все анимации с 0 приоритетом будут проиграны раньше, или вы можете выставить приоритет 1 или выше, тогда анимация будет проиграна до анимаций с 0 приоритетом.  Например определение анимации &quot;punch&quot; начинающейся с 131 кадра  и состоящей из 6 кадров, проигрываемой со скоростью 15 кадров в секунду: md3anim &quot;punch&quot; 131 6 15 </p><p><b>md3link P C T</b></p><p>Эта команда отвечает за линковку двух моделей. Каждая модель загруженная с помощью md3load имеет свой ID. Первая загруженная модель имеет ID 0, вторая -  ID 1, и так далее. Эти идентификаторы используются для  определения моделей и обьединения(линковки) их вместе. P это ID родительской модели. C это ID Дочерней модели. T это название тега определяющего вершины модели, которые будут обьединены.  Примечание: Удостоверьтесь что вы поняли разницу между родительской и дочерней моделью. Рендеринг начинается с модели 0 (Первая загруженная модель) и продолжается   на дочерних моделях. Представьте себе дерево, так-вот модель 0 это корень. </p><p><p align="center"><b><i>Пример конфигурации</b></i></p id=\"end{center}\"></p><p><i>md3load lower.md3 // модель № 0</p><p>md3skin l_lower ./default_l.png</p><p>md3anim dying           0   30  20</p><p>md3anim dead            30  1   25</p><p>md3anim &quot;forward|backward|left|right|swim&quot; 114 10  18</p><p>md3anim idle            164 30  30</p><p>md3anim &quot;jump|lag|edit&quot; 147     8       15</p><p>md3load upper.md3 // модель № 1</p><p>md3skin u_torso ./default.png</p><p>md3anim dying           0   30  20</p><p>md3anim dead            30  1   25</p><p>md3anim &quot;lag|edit&quot;      91  40  18</p><p>md3anim &quot;attack *&quot;      131 6   15</p><p>md3anim idle            152 1   15</p><p>md3anim pain            152 1   15</p><p>md3load head.md3 // модель № 2</p><p>md3skin h_head ./default_h.png</p><p>md3link 0 1 tag_torso</p><p>md3link 1 2 tag_head</p><p>mdlspec 50</p><p>mdlscale 20         // 20 процентов от оригинального размера</p><p>mdltrans 0 0 -1.5   // lower the model a bit </i></p>]]></description>
</item>
<item>
<title>Параметры конфигурации формата md2 в Sauerbraten</title>
<link>https://rulinux.net/message.php?newsid=34865&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=34865&amp;page=1</guid>
<pubDate>Tue, 13 Oct 2009 11:08:00 +0400</pubDate>
<description><![CDATA[<p>MD2 файлы должны располагаться в каталоге <i>packages/models/</i>. В каталоге модели должен располагаться скин (UV текстура, обычно skin.jpg или skin.png) и сама md2(обычно tris.md2). Так-же там может располагаться masks.jpg содержащая specmap в R канале,  glowmap в G канале, и chrome map в B канале. Движок подхватит их автоматически.</p><p>Если один из файлов не найден, движок будет искать их в родительской директории. Например, если для модели <i>flags/red</i> не найдена tris.md2 в каталоге <i>packages/models/flags/red/</i>, то движок станет искать tris.md2 в каталоге <i>packages/models/flags/</i>. Это позволяет менять скины и геометрию.</p><p>Ожидается что файлы формата md2  используют Quake-совместимый масштаб и анимацию.</p><p>Вы можете так-же добавить  конфигурационный файл (md2.cfg) в каталог с моделью, позволяющий настроить анимацию модели. Следующие команды могут быть использованы в  md2.cfg: </p><p><b>md2anim N F M [S [P]]</b></p><p>N это название анимации. Любая из перечисленных ниже анимаций может быть использована: </p><p><ul> <li>&nbsp;dying  <li>&nbsp;dead  <li>&nbsp;pain  <li>&nbsp;idle  <li>&nbsp;forward  <li>&nbsp;backward  <li>&nbsp;left  <li>&nbsp;right  <li>&nbsp;hold 1 ... hold 7  <li>&nbsp;attack 1 ... attack 7  <li>&nbsp;jump  <li>&nbsp;sink  <li>&nbsp;swim  <li>&nbsp;edit  <li>&nbsp;lag  <li>&nbsp;taunt  <li>&nbsp;win  <li>&nbsp;lose  <li>&nbsp;gun shoot  <li>&nbsp;gun idle  <li>&nbsp;vwep shoot  <li>&nbsp;vwep idle  <li>&nbsp;mapmodel  <li>&nbsp;trigger 
</ul></p><p>F это номер кадра с которого начинается анимация. M это количество кадров в анимации. S это количество кадров в секунду. Если не указано, то 10 FPS используется по умолчанию. P определяет приоритет анимации(по умолчанию P=0). </p><p>Например определение анимации &quot;pain&quot; начинающейся с 50 кадра и состоящей из 6 кадров и работающей со скоростью 30 кадров в секунду Будет выглядеть так: md2anim &quot;pain&quot; 50 6 30 </p>]]></description>
</item>
<item>
<title>Экспорт статических моделей из Blender в Sauerbraten.</title>
<link>https://rulinux.net/message.php?newsid=34866&amp;page=1</link>
<guid>https://rulinux.net/message.php?newsid=34866&amp;page=1</guid>
<pubDate>Thu, 24 Sep 2009 16:30:00 +0400</pubDate>
<description><![CDATA[<p>Данная статья является вольным переводом статьи &nbsp;<a href="http://cube.wikispaces.com/MD3+Export+From+Blender+Tutorial">http://cube.wikispaces.com/MD3+Export+From+Blender+Tutorial</a></p><p>В данной статье используется Blender и md3 exporter script. По умолчанию предполагается что вы умеете работать в Blender хотя-бы на базовом уровне. А так-же что у вас уже имеется готовая модель для экспорта( в нашем случае это будет бронежилет взятый из модели сталкера с сайта &nbsp;<a href="http://artblock.ru">http://artblock.ru</a> ). Итак начнем. Открываем Blender:</p>
<img src="/artimages/static-md3/1.jpg">
<p> Панели могут быть расположены по-другому, в зависимости от ваших предпочтений. Откройте файл с моделью нажав F1 или CTRL+O, а затем нажмите Num_1 для получения вида спереди.</p><p>Эта модель бронежилета должна располагаться над землей. Вы можете добиться этого редактированием md3.cfg после экспорта, или изменением высоты в Blender как показано на рисунке. Использование обоих методов сразу позволит вам добиться большей точности. Ниже показана модель в режиме редактирования с точкой отсчета в начале координат. Для правильного экспорта любой модели, анимированной или нет, точка отсчета должна быть 0,0,0. Проверьте uvmap для уверенности в том, что карта правильная. Нажмите TAB для выхода из Edit Mode, а затем F для входа в режим UV Face Select . В версии 2.46 и выше режим UV Face Select отсутствует, он объединен с Edit Mode.  Выберите UV/Image Editor (справа) нажав на кнопку Window Type(внизу слева).</p>
<img src="/artimages/static-md3/2.jpg"><p>Если вы еще не сконвертировали четырехугольники в треугольники, то выполните это  в  режиме редактирования выделив все(A) и нажав Ctrl+T или выбрав в меню Mesh → Faces → Convert Quads to Triangles.  Это правильный формат граней в игровых движках.</p><p>Осталось выполнить еще один шаг и можно будет экспортировать. Оси в Blender отличаются от большинства 3d приложений в том числе и от Sauerbraten. Если мы экспортируем модели сейчас, то направления моделей будут не верны . Выделите все вершины нажав A. Затем R для того чтобы повернуть модель А затем Z для врашения по оси z. Поворачиваем модель на -90.</p>
<img src="/artimages/static-md3/3.jpg">
<p> К вашему сведению скажу что модели по умолчанию в Blender типа Куба и Цилиндра слишком малы для экспорта в Sauerbraten. Это может быть исправлено в Blender и/или через  конфиг md3.cfg используемый в Sauerbraten. Для примера показана модель бронежилета в сравнении с камерой. Теперь все готово для экспорта. Нажмите TAB для перехода в  Object Mode и выбрав модель нажмите File → Export → Quake3(.Md3). Дайте имя модели, например tris.md3, выберите каталог для экспорта и нажмите Export Quake3 MD3.</p><p>Если вы читали Sauerbraten/docs/dev/md3_sauer_howto.txt (это ваша библия о sauerbraten md3) вы знаете что статичская модель не требует md3.cfg. Это нормально, но мы сделаем ее чтобы понять процесс. Откройте любой текстовый редактор(например Vi или Emacs) и сохраните файл как md3.cfg. Добавьте в него следующие строки:</p><p>md3load tris.md3</p><p>эта строка подгужает модель в sauerbraten. Далее мы должны указать существующие текстуры и маски. Так-же вам потребуется имя меша для наложения на него текстуры. Вы можете найти его в  Blender на панелях режима Editing(F9) посмотрев что указано в строке OB: панели Links and Materials. На модели монеты указано имя kevlar (второй скриншот справа). Следующая строка будет иметь вид:</p><p>md3skin kevlar ./skin.jpg</p><p>Где skin.jpg это имя текстуры наложенной на модель. Теперь давайте настроим размер и specularity:</p><p>mdlscale 200 mdlspec -1</p><p>Сохраните файл и можно начинать тест. Только для начала сделайте бекап файлов tris.md3 skin.jpg и md3.cfg из каталога с заменяемой моделью. Запустите Sauerbraten и если все прошло гладко ваша модель окажется в игре. В моем случае модель выглядит так:</p>
<img src="/artimages/static-md3/4.jpg">
<br>Примечание: Если вы хотите заменить модель хранящуюся в игре в формате md2, не ищите туториал по экспорту md2. Просто сохраните модель в формате md3 в каталог с заменяемой моделью предварительно удалив модель формате md2. И если ваша модель проэкспортирована в соответствии с данным уроком, то движок автоматически подхватит вашу модель.
<p>В следующей статье мы изучим  экспорт анимированных md3 файлов.</p>]]></description>
</item>
</channel>
</rss>