<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8788214764235807497</id><updated>2012-02-16T18:19:52.411+03:00</updated><title type='text'>andrei kletskov (111) - blender scripts</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blenderscript111.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blenderscript111.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>111</name><uri>http://www.blogger.com/profile/00114324279698213240</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_CVmCFYpd0jk/SZyV5YqvMiI/AAAAAAAAAHM/zd36yNN6W4U/S220/avatar_alien.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8788214764235807497.post-6357735878621779386</id><published>2011-07-29T06:20:00.006+03:00</published><updated>2011-09-30T21:26:13.273+03:00</updated><title type='text'>полезное видео</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: #393939; color: #cccccc; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Scripting a Random Material Assigner&lt;br /&gt;&lt;a href="http://vimeo.com/26515608" style="color: #00e0a4; text-decoration: none;"&gt;http://vimeo.com/26515608&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Scripting a Custom Tool Menu&lt;br /&gt;&lt;a href="http://www.blendercookie.com/2011/07/25/scripting-a-custom-tool-menu/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+Blendercookiecom+%28Blender+Cookie%29"&gt;http://vimeo.com/26770268&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Building an Audio Visualizer with Pyhon&lt;br /&gt;&lt;a href="http://vimeo.com/24568128"&gt;http://vimeo.com/24568128&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tip: Script Bug Fixing 101&lt;br /&gt;&lt;a href="http://vimeo.com/27219938"&gt;http://vimeo.com/27219938&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;Introduction to Scripting with Python in Blender&lt;br /&gt;&lt;a href="http://vimeo.com/28203314"&gt;http://vimeo.com/28203314&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Itroduction&amp;nbsp;to Scripting in the Blender Game Engine - part 01&lt;br /&gt;&lt;a href="http://vimeo.com/29443673"&gt;http://vimeo.com/29443673&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Itroduction to Scripting in the Blender Game Engine – part 02&lt;br /&gt;&lt;a href="http://vimeo.com/29443955"&gt;http://vimeo.com/29443955&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8788214764235807497-6357735878621779386?l=blenderscript111.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blenderscript111.blogspot.com/feeds/6357735878621779386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blenderscript111.blogspot.com/2011/07/blog-post_29.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default/6357735878621779386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default/6357735878621779386'/><link rel='alternate' type='text/html' href='http://blenderscript111.blogspot.com/2011/07/blog-post_29.html' title='полезное видео'/><author><name>111</name><uri>http://www.blogger.com/profile/00114324279698213240</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_CVmCFYpd0jk/SZyV5YqvMiI/AAAAAAAAAHM/zd36yNN6W4U/S220/avatar_alien.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8788214764235807497.post-5816032971548524078</id><published>2010-09-29T03:59:00.005+03:00</published><updated>2010-09-29T04:04:48.372+03:00</updated><title type='text'>немного про питон</title><content type='html'>надо было обрабоать текстовый файл - убрать пробелы после каждого символа. в общем худо-бедно осилил задачу.&lt;br /&gt;вот что вспомнил-узнал.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;print ('sdsd')&lt;/span&gt; - что нибудь напечатать, скобки и одинарные кавычки&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;f=open('c:/temp/f.txt','w')&lt;/span&gt; - открыть файл для записи, одинарные кавычки, обратные слэши в пути&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;f.read(1)&lt;/span&gt; - прочитать один символ, f - это объект который открыт ранее командой open()&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;f.seek(0)&lt;/span&gt; - переместиться в начало файла ибо при каждом чтении курсор сдвигается.&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;f.write('string') &lt;/span&gt;- записать (добавить) в файл текст&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;f.close()&lt;/span&gt; - закрыть открытый файл&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;if a==True:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;&amp;nbsp;&amp;nbsp; print('a=true')&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;else:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;&amp;nbsp;&amp;nbsp; print('a=false')&lt;/span&gt; - пример if else,обратить внимание на отступы, булеановское значение True с большой буквы&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;while True:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;&amp;nbsp;&amp;nbsp; a=a+1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #b6d7a8;"&gt;&amp;nbsp;&amp;nbsp; if a&amp;gt;10: break&lt;/span&gt; - пример организации цикла while с переносом проверки условия в конец - break, один оператор можно писать в одну строчку после двоеточия, двоеточие и блок с отступом заменяют в питоне скобки&lt;br /&gt;&lt;br /&gt;пока что я колупался в шеллоболочке которая идёт в комплекте с питоном, там надо печатать команды а не писать программу. надо будет поискать инструмент более удобный и позволяющий писать проги и запускать их на выполнение. хотя и шелл этот можно юзать для всяких задач, особенно тем кто питон хорошо знает.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8788214764235807497-5816032971548524078?l=blenderscript111.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blenderscript111.blogspot.com/feeds/5816032971548524078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blenderscript111.blogspot.com/2010/09/blog-post_29.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default/5816032971548524078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default/5816032971548524078'/><link rel='alternate' type='text/html' href='http://blenderscript111.blogspot.com/2010/09/blog-post_29.html' title='немного про питон'/><author><name>111</name><uri>http://www.blogger.com/profile/00114324279698213240</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_CVmCFYpd0jk/SZyV5YqvMiI/AAAAAAAAAHM/zd36yNN6W4U/S220/avatar_alien.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8788214764235807497.post-103330966110969445</id><published>2010-09-05T20:25:00.024+03:00</published><updated>2010-09-29T04:00:03.214+03:00</updated><title type='text'>начало</title><content type='html'>итак, задача номер один. менять какие то атрибуты целой куче объектов за раз.&lt;br /&gt;&lt;br /&gt;пока поковыряемся в основах...&lt;br /&gt;&lt;br /&gt;в консоли (которая внутри блендера) можно смотреть весь блендеровский апиай выведенный в питон (автокомплишн по ctrl+space). также можно посмотреть аутлайнер в режиме датаблоков - помогает понять что откуда растёт. плюс есть кое-какая информация в подсказке которая всплывает при наведении на какой нибудь элемент.&lt;br /&gt;&lt;br /&gt;полезные переменные:&lt;br /&gt;&lt;span style="color: #b6d7a8;"&gt;bpy.context.mode&lt;/span&gt; - текущий режим блендера (Object, Edit, Sculpt etc.,)&lt;br /&gt;&lt;span style="color: #b6d7a8;"&gt;bpy.context.object &lt;/span&gt;= &lt;span style="color: #b6d7a8;"&gt;bpy.context.active_object&lt;/span&gt; - активный объект&lt;br /&gt;&lt;span style="color: #b6d7a8;"&gt;bpy.context.selected_objects&lt;/span&gt; - выбранные объекты, включая активный&lt;br /&gt;&lt;span style="color: #b6d7a8;"&gt;bpy.data.materials&lt;/span&gt;,&lt;span style="color: #b6d7a8;"&gt; bpy.data.objects&lt;/span&gt; и т.д. - доступ к данным в файле.&lt;br /&gt;&lt;span style="color: #b6d7a8;"&gt;bpy.context.scene.objects.active = obj&lt;/span&gt;&lt;b&gt;&lt;span style="color: #b6d7a8;"&gt; &lt;/span&gt; &lt;/b&gt;- назначить новый активный объект&lt;br /&gt;&lt;br /&gt;чтобы иметь доступ хоть к чему нибудь надо импортировать модули, моуль bpy будет импортирован в любом случае: import bpy, впрочем это будет ясно сразу по первым же ошибкам.&lt;br /&gt;&lt;br /&gt;вот &amp;nbsp;скрипт который меняет всем выделенным объектам меш на какой нужно. (впрочем это же можно сделать и штатными средствами блендера через ctrl+L, но нам интересен принцип)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #b6d7a8;"&gt;import bpy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b6d7a8;"&gt;for o in bpy.context.selected_objects:&lt;/span&gt;&lt;span style="color: #b6d7a8;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #b6d7a8;"&gt; &lt;/span&gt;&lt;span style="color: #b6d7a8;"&gt; &lt;/span&gt;&lt;span style="color: #b6d7a8;"&gt;&amp;nbsp;   &amp;nbsp;o.data = bpy.data.meshes["y"]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;for ... in ... : - цикл&lt;br /&gt;o.data - меш у объекта&lt;br /&gt;bpy.data.meshes["y"] - присваиваем новый меш объекту из сборища мешей в файле.&lt;br /&gt;&lt;br /&gt;немного про питон, пока интересно то, что у него нет открывающих-закрывающих скобок для блоков кода, а вместо этого используются отступы, то есть один пробел перед началом строки = второй уровень и все последующие строки с одним пробелом впереди будут этим уровнем. не обязательно один пробел можно два или больше главное чтобы один уровень был. в вышеприведённом примере, виден пробел в начале строки после for, то есть эта строчка и есть тело цикла.&lt;br /&gt;&lt;br /&gt;полезные ссылки:&lt;br /&gt;&lt;a href="http://sites.google.com/site/satishgoda/blender/learningblender25/introduction-to-blender-python-api"&gt;вводная статья на инглише&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blenderartists.org/forum/showthread.php?t=164765"&gt;примеры скриптов&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blender.org/documentation/250PythonDoc/bpy.ops.html"&gt;список операторов&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.blender.org/index.php/Dev:2.5/Py/API/Intro"&gt;на оффсайте инфа&lt;/a&gt;&lt;br /&gt;&lt;a href="http://openbookproject.net/thinkCSpy/index.html"&gt;книжка по питону&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8788214764235807497-103330966110969445?l=blenderscript111.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blenderscript111.blogspot.com/feeds/103330966110969445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blenderscript111.blogspot.com/2010/09/blog-post_05.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default/103330966110969445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default/103330966110969445'/><link rel='alternate' type='text/html' href='http://blenderscript111.blogspot.com/2010/09/blog-post_05.html' title='начало'/><author><name>111</name><uri>http://www.blogger.com/profile/00114324279698213240</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_CVmCFYpd0jk/SZyV5YqvMiI/AAAAAAAAAHM/zd36yNN6W4U/S220/avatar_alien.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8788214764235807497.post-8550850248003509482</id><published>2010-09-05T20:11:00.001+03:00</published><updated>2010-09-06T11:35:02.439+03:00</updated><title type='text'>первый пост</title><content type='html'>про что этот блог.&lt;br /&gt;&lt;br /&gt;буду осваивать блендеровский питон скрипт. без него как то туговато. осваивать будем скрипты нового блендера 2.5 - там вроде кое чего поменялось по сравнению со старым.&lt;br /&gt;&lt;br /&gt;какой бэкграунд имеем:&lt;br /&gt;- некоторое количество написанных максскриптов (то есть какая то база под специфику 3д программирования)&lt;br /&gt;- какие-то навыки программирования вообще&lt;br /&gt;- прочитанная когда-то давно книжка по питону&lt;br /&gt;&lt;br /&gt;итак, приступим...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8788214764235807497-8550850248003509482?l=blenderscript111.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blenderscript111.blogspot.com/feeds/8550850248003509482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blenderscript111.blogspot.com/2010/09/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default/8550850248003509482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8788214764235807497/posts/default/8550850248003509482'/><link rel='alternate' type='text/html' href='http://blenderscript111.blogspot.com/2010/09/blog-post.html' title='первый пост'/><author><name>111</name><uri>http://www.blogger.com/profile/00114324279698213240</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_CVmCFYpd0jk/SZyV5YqvMiI/AAAAAAAAAHM/zd36yNN6W4U/S220/avatar_alien.jpg'/></author><thr:total>0</thr:total></entry></feed>
