Blender для начинающих/Python: различия между версиями

Содержимое удалено Содержимое добавлено
м <source> -> <syntaxhighlight> (phab:T237267)
Строка 11:
=== Str ===
Строки предназначены для хранения текстовой информации. Строки могут быть любой длины. Например может быть такая строка:
<sourcesyntaxhighlight lang="python">'Hello'</sourcesyntaxhighlight>
Строки всегда берутся в кавычки. Одинарные или двойные. Чтобы растянуть строку на несколько строк программы, необходимо заключить её в три пары кавычек. Это не сработает и выдаст ошибку:
<sourcesyntaxhighlight lang="python">'He
llo'</sourcesyntaxhighlight>
Это сработает:
<sourcesyntaxhighlight lang="python">'''He
llo'''</sourcesyntaxhighlight>
И это тоже:
<sourcesyntaxhighlight lang="python">"""He
llo"""</sourcesyntaxhighlight>
Символ переноса строки в последнем случае включается в строку.
 
Строка 41:
== Переменные ==
Чтобы создать переменную какого либо типа из вышеперечисленных стоит написать следующее:
<sourcesyntaxhighlight lang="python">имя = значение</sourcesyntaxhighlight>
Имя — имя создаваемой переменной. Значение — начальное значение переменной. Например:
 
<sourcesyntaxhighlight lang="python">a = 12</sourcesyntaxhighlight>
 
= — эта операция присваивания (установки значения).
Строка 50:
== Списки ==
Список — последовательность элементов одного типа, имеющая имя. Списки в Python создаются так:
<sourcesyntaxhighlight lang="python">имя = [значение1, значение2, ... , значениеN]</sourcesyntaxhighlight>
Но можно также создавать и пустые списки:
<sourcesyntaxhighlight lang="python">имя = []</sourcesyntaxhighlight>
Для создания списков определена такая функция как split (разделение на слова по пробелам), и обратная ей join (объединение). Первая предназначена для получения списка из переменной строки разделением на слова по разделителю. Например:
<sourcesyntaxhighlight lang="python">
s = 'Hi user'
a = []
a = s.split(разделитель)</sourcesyntaxhighlight>
Разделитель — символ по которому строка будет делиться на части. Join — противоположна Split. Она объединяет все элементы списка в одно целое. Например:
<sourcesyntaxhighlight lang="python">a = ['a', 'b', 'c']
s = заполнитель.join(a)</sourcesyntaxhighlight>
У функции Join есть параметр в скобках, определеющий что будет склеиваться в единое целое — то есть имя списка. Перед точкой пишется то что будет заполнителем между склеенными элементами.
 
Строка 78:
 
Создаются они вот так:
<sourcesyntaxhighlight lang="python">a = (v, k, d, ... , p, r)</sourcesyntaxhighlight>
Где a — кортеж.
 
Например:
<sourcesyntaxhighlight lang="python">a = (1, 2, 3)</sourcesyntaxhighlight>
 
Также можно создать кортеж из строки так, что каждый символ строки будет отдельным элементом кортежа:
<sourcesyntaxhighlight lang="python">a = tuple('string') # получим кортеж ('s', 't', 'r', 'i', 'n', 'g')</sourcesyntaxhighlight>
 
== Множества ==
Строка 92:
# Как следствие, в множестве не может быть двух и более элементов с одинаковыми значениями.
Создать множество из строки можно функцией set():
<sourcesyntaxhighlight lang="python">a = set(строка)</sourcesyntaxhighlight>
На выходе получим множество. Все повторяющиеся символы из строки будут записываться единожды:
<sourcesyntaxhighlight lang="python">a = set('aaajs') # результат {'a', 'j', 's'}</sourcesyntaxhighlight>
Другой способ создания множества — перечисление всех в него входящих элементов в {} — литералах:
<sourcesyntaxhighlight lang="python">a = {'a', 'j', 's'}</sourcesyntaxhighlight>
Писать {} без ничего для декларации множества недопустимо.
 
Строка 111:
 
Словари представляют собой тип данных, в котором каждому элементу соответствует его собственное символическое обозначение (ключ), имея который можно узнать значение элемента. Создаются словари с помощью литералов:
<sourcesyntaxhighlight lang="python">a = {ключ:значение, ... , ключN:значениеN}</sourcesyntaxhighlight>
Например:
<sourcesyntaxhighlight lang="python">a = {'year':'2016','date':'19:08:16'}</sourcesyntaxhighlight>
Также объявить их можно функцией dict() следующим образом:
<sourcesyntaxhighlight lang="python">a = dict(ключ=значение, ... , ключN=значениеN)</sourcesyntaxhighlight>
Третий способ создать словарь, заполнив его только ключами, оставив соответствующие им значения значениями по умолчанию можно так:
<sourcesyntaxhighlight lang="python">a = dict.fromkeys([список])</sourcesyntaxhighlight>
В списке должны быть сами ключи — просто какие то значения, которые будут ключами для словаря.
 
Для изменения элементов словаря надо писать конструкцию:
<sourcesyntaxhighlight lang="python">словарь[ключ]</sourcesyntaxhighlight>
Если данного ключа нет в словаре возникнет ошибка.
 
Попытка получить доступ к несуществующему элементу с ключом «s»:
<sourcesyntaxhighlight lang="python">a = {'a':1, 'b':2, 's':4}
print(a['s'])</sourcesyntaxhighlight>
 
=== Операции работы со словарями ===
Строка 138:
== Ввод и вывод ==
Для ввода чего либо используется команда (функция) input(). Так, эта программа установит значение переменной, которое пользователь ввел с клавиатуры:
<sourcesyntaxhighlight lang="python">имя = input()</sourcesyntaxhighlight>
 
Но сначала значение будет строкой. Для избежание этого надо явно указывать тип вводимого значения:
 
<sourcesyntaxhighlight lang="python">имя = тип(input())</sourcesyntaxhighlight>
 
Для целых чисел: int(input()), для float (вещественных): float(input()), строк: str(input()).
Строка 150:
== Оператор if ==
Оператор if — команда, выполняющая блок команд, при выполнении условия.
<sourcesyntaxhighlight lang="python">if условие:
# команды</sourcesyntaxhighlight>
Условие — любое выражение, которое проверяется на истинность. В нем могут быть знаки сравнения: > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), == (равно), != (не равно). Например:
<sourcesyntaxhighlight lang="python">a = int(1)
if a == 1:
print('a ранво 1')</sourcesyntaxhighlight>
В ситуации когда надо проверить много условий поможет такая конструкция как if elif else:
<sourcesyntaxhighlight lang="python">if условие:
# команды
elif условие:
# команды
else:
# команды</sourcesyntaxhighlight>
elif — дополнительный блок для проверки другого условия, нежели в if. Условие в elif будет проверяться, если в if условие не выполнилось. Соответственно в else выполниться команды, если никакое из условие не было верным. Количество elif неограниченно. При том, если какое то условие оказалось верным, то операторы ниже него выполняться, и выполение блока if завершится — остальные нижестоящие условие не будут проверяться.
 
=== Тип bool ===
Тип bool — тип, который имеет всего два значения: True (истина) и False (ложь). Если надо из true получить число то надо написать:
<sourcesyntaxhighlight lang="python">имя = int(True)</sourcesyntaxhighlight>
Имя — имя переменной, которой присвоется 1. Если преобразовать False к числу получится 0. Аналогично почти у строк: если она пуста то получится при преобразовании из str в bool значение 0, иначе 1.
 
В условиях, например чтобы написать условие вида:
<sourcesyntaxhighlight lang="python">if a == True:</sourcesyntaxhighlight>
где a — переменная, можно использовать сокращенный вариант:
<sourcesyntaxhighlight lang="python">if a:</sourcesyntaxhighlight>
 
== Условия для множеств ==
Строка 184:
== Оператор while ==
While позволяет организовывать циклы, команды внутри которых будут выполняются только при выполнении условия. Создавать цикл можно так:
<sourcesyntaxhighlight lang="python">while условие:
# команды</sourcesyntaxhighlight>
Например:
<sourcesyntaxhighlight lang="python">a = int(1)
while a <= 10:
a = a + 1</sourcesyntaxhighlight>
 
== for ==
For предназначен для циклического выполнения команд определенное количество раз. Его синтаксис таков:
<sourcesyntaxhighlight lang="python">for переменная in диапазон:
команды</sourcesyntaxhighlight>
Диапазоном может служить как простое значение так и выражение или список значений. Типы в диапазона могут быть любыми:
<sourcesyntaxhighlight lang="python">a = [1, 2, 3]
ind = 0
for s in 'a', 'b', 'c':
print('Букве ', a[ind],'соответствует номер ',s)
ind = ind + 1</sourcesyntaxhighlight>
 
== Сложные условия ==
Когда требуется объединить условия следует пользоваться такими словами как and, or. And — вернет true, если все условия, которые были объединены с его помощью выполнились. Or — вернет true, когда хотя бы одно условие выполнилось. Например:
<sourcesyntaxhighlight lang="python">a = 'a'
if (a == 'a') and (a != 'b'):
print('true')</sourcesyntaxhighlight>
<sourcesyntaxhighlight lang="python">a = 'a'
if (a == 'a') or (a == 'b'):
print('true')</sourcesyntaxhighlight>
Объединяемые условия следует брать в скобки. Также как и в других языках логическое отрицание обозначаемся словом not. Читается как: если условие не такое как в скобках.
<sourcesyntaxhighlight lang="python">a = 'a'
if not (a == 'd'):
print('true')</sourcesyntaxhighlight>
 
= Функции =
Функция — это группа команд, которая имеет свое имя. Создавать ее можно так:
<sourcesyntaxhighlight lang="python">def имя(a,b,c...n)
# команды</sourcesyntaxhighlight>
Вместо имени должно стоять название функции. a, b, c и n — параметры. Тип параметров не нужно указывать — пишите только их имена. Например:
<sourcesyntaxhighlight lang="python">def Summ(a,b)
return a+b</sourcesyntaxhighlight>
Здесь слово return говорит о том, что функция возвращает результат равный a + b. То есть дает возможность присвоить сумму a и b другой переменной. Вместо a + b может стоять любое выражение.
 
Для использования функций (вызова) надо просто написать имя функции и значения ее параметров.
<sourcesyntaxhighlight lang="python">def Summ(a,b)
return a+b
 
K = Summ(2,5)</sourcesyntaxhighlight>
 
== Лямбды ==
Лямбда — эта функция, записанная в простой упрощенной форме. Общий синтаксис:
<sourcesyntaxhighlight lang="python">lambda параметры: результат</sourcesyntaxhighlight>
Параметрами тут могут выступать как и переменные, так и любые другие объекты. Результат может записываться как любое выражение. Вот пример лямбды:
<sourcesyntaxhighlight lang="python">lambda x: x**2</sourcesyntaxhighlight>
Вернет x².
 
Также лямбды можно именовать. Для этого пишите:
<sourcesyntaxhighlight lang="python">имя = lambda параметры: результат</sourcesyntaxhighlight>
Например:
<sourcesyntaxhighlight lang="python">f = lambda x: x**3</sourcesyntaxhighlight>
Для ее вызова используйте стандартный синтаксис вызова функций:
<sourcesyntaxhighlight lang="python">имя(значения параметров)</sourcesyntaxhighlight>
Вызов лямбды и функции, которые возводят d в квадрат:
<sourcesyntaxhighlight lang="python">
def F(x):
return x**2
Строка 252:
d = f(3) # вызов лямбды
d = F(3) # вызов функции
</syntaxhighlight>
</source>
 
=== Условия в лямбда-функциях ===
Лямбды позволяют использовать в себе условия:
<sourcesyntaxhighlight lang="python">lamba параметры: выражение if условие</sourcesyntaxhighlight>
В данном случае лямбда вернет указанное после if выражение, только если проверяемое условие будет истинным:
<sourcesyntaxhighlight lang="python">f = lamba x: x**2 if x > 0
a = 0
print(f(a)) # на экран выведется 0</sourcesyntaxhighlight>
Можно также использовать if с else:
<sourcesyntaxhighlight lang="python">lamba параметры: выражение if условие else выражение2</sourcesyntaxhighlight>
Лямбда-функция вернет выражение2 только, если условие не выполнилось.
<sourcesyntaxhighlight lang="python">f = lamba x: x**2 if x > 0 else 123
a = 0
print(f(a)) # на экран выведется 123</sourcesyntaxhighlight>
 
=== Вложенные лямбда-функции ===
Лямбда функция может возвращать лямбда функцию следующим образом:
<sourcesyntaxhighlight lang="python">lambda параметры: (lambda параметры2: результат)</sourcesyntaxhighlight>
Внешняя лямбда вернет ссылку на вложенную функцию. Например:
<sourcesyntaxhighlight lang="python">f = lambda x: (lambda j: x*j)
a = f(10)</sourcesyntaxhighlight>
Для вызова таких лямбд можно писать:
<sourcesyntaxhighlight lang="python">f1 = f(параметры)
f2 = f1(параметры)
...
fN = fM(параметры)
</syntaxhighlight>
</source>
Где f — сложная лямбда, N на единицу больше M, а все остальные f (ниже определенной лямбды) — ссылки на более вложенные лямбды. Каждая внешняя лямбда для своей вложенной будет возвращать ссылку на нее.
 
При достижении самой вложенной лямбды Вы получите накопившейся результат:
<sourcesyntaxhighlight lang="python">Lmain = lambda x: (lambda y: (lambda z: x+y+z))
f1= Lmain(1) # получаем ссылку на (lambda y: (lambda z: x+y+z))
f2 = f1(3) # получаем ссылку на (lambda z: x+y+z)
f3(5) # вызываем самую вложенную лямбду x = 1, y = 3, z = 5
print(f3(5)) # получится 9
</syntaxhighlight>
</source>
 
= Исключения =
Строка 316:
= Конструкция try — except =
Любые ошибки можно обработать (выполнить некоторые команды при возникновении исключения, избежав сбоя работы программы). Это делается с помощью операторов try и except:
<sourcesyntaxhighlight lang="python">
try
# команды
except название исключени:
# команды, выполняемые при возникновении исключения
</syntaxhighlight>
</source>
Например, переменной b присвоется значение 1, если произойдет деление на 0:
<sourcesyntaxhighlight lang="python">
a = 3
b = int(input())
Строка 330:
except ZeroDivisionError:
b = 1
</syntaxhighlight>
</source>
Стоит заметить, что перехватывая (обрабатывая) исключение Вы дадите интерпретатору обрабатывать все, являющиеся потомками данного исключения.
 
Пример обработки всех исключений — потомков класса ArithmeticError:
<sourcesyntaxhighlight lang="python">
a = 3
b = int(input())
Строка 341:
except ArithmeticError:
b = 1
</syntaxhighlight>
</source>
 
= Импорт =
Команда import импортирует некоторый модуль в данную программу. Общий синтаксис:
<sourcesyntaxhighlight lang="python">import имя</sourcesyntaxhighlight>
Вместо имени пишите название подключаемого модуля. Если их много, то имена модулей пишите через запятую.
<sourcesyntaxhighlight lang="python">import a, b, c</sourcesyntaxhighlight>
При нужде в сокращении кода используйте конструкцию from n import m:
<sourcesyntaxhighlight lang="python">from имя import имя2</sourcesyntaxhighlight>
Вместо имени пишите имя модуля, из которого будет импортироваться что нибудь с именем имя2.
<sourcesyntaxhighlight lang="python">from modulemy import proc1, proc2, proc3</sourcesyntaxhighlight>
Также можно импортировать модули, присваивая им псевдонимы (другое название):
<sourcesyntaxhighlight lang="python">import имя as псевдоним</sourcesyntaxhighlight>
Модуль будет подключен к программе и вызов функций из него будет происходить следующим образом:
<sourcesyntaxhighlight lang="python">псевдоним.функция()</sourcesyntaxhighlight>
Аналогично будут использоваться другие данные из него (переменные, списки, классы и т. д.).
 
= Генераторы =
Когда требуется создать список по некоторой формуле надо использовать следующую конструкцию:
<sourcesyntaxhighlight lang="python">имя = [формула for переменная in range()]</sourcesyntaxhighlight>
Формула — формула, по которой строится список. Переменная — имя переменной, которая используется в формуле и значение которой берется из функции range().
 
Например, список квадратов чисел Вы можете создать так:
<sourcesyntaxhighlight lang="python">a = [n**2 for n in range(0,10,1)]</sourcesyntaxhighlight>
Также вместо range() можно использовать строку, по которой пробежится переменная из формулы:
<sourcesyntaxhighlight lang="python">имя = [формула for переменная in строка]</sourcesyntaxhighlight>
Создание списка из строки, где каждая буква повторится 3 раза:
<sourcesyntaxhighlight lang="python">a = [c**3 for c in 'Example']</sourcesyntaxhighlight>
 
== Генераторы с условиями ==
В генераторы можно ключать условия с if таким образом:
<sourcesyntaxhighlight lang="python">имя = [формула for переменная in range() if условие]</sourcesyntaxhighlight>
В элемент будут включаться все элементы, для получившегося значения формулы которых выполняется условие в генераторе.
 
Например, создание списка только из четных элементов:
<sourcesyntaxhighlight lang="python">a = [x for x in range(0,100,1) if x % 2 == 0]</sourcesyntaxhighlight>
 
== Вложенные генераторы ==
Один генератор может быть вложенным в другой:
<sourcesyntaxhighlight lang="python">имя = [формула for переменная in range() for переменная2 in range()]</sourcesyntaxhighlight>
Здесь второй генератор это:
<sourcesyntaxhighlight lang="python">for переменная2 in range()</sourcesyntaxhighlight>
Два генератора вложены друг в друга:
<sourcesyntaxhighlight lang="python">a = [c + d for c in 'ab' for d in 'ef'] # результатом будет список ['ae', 'af', 'be', 'bf']</sourcesyntaxhighlight>
Не исключается возможность включения условий в такой генератор:
<sourcesyntaxhighlight lang="python">a = [c + d for c in 'ab' for d in 'erf' if d != r] # результатом будет список ['ae', 'af', 'be', 'bf']</sourcesyntaxhighlight>
Степень вложенности генераторов один в другой не имеет предела. Например:
<sourcesyntaxhighlight lang="python">a = [c + d + p + s for c in 'ab' for d in 'ef' for p in 'tu' for s in 'qw']</sourcesyntaxhighlight>
Создание списка при вложенном генераторе идет следующим образом:
# Переменная самого вложенного генератора всегда изменяется первой.
Строка 398:
 
Классы в Python объявляются следующим образом:
<sourcesyntaxhighlight lang="python">
class имя:
# содержание класса</sourcesyntaxhighlight>
В классе описывается макет будущего объекта. Для того, чтобы этот макет работал (объекты можно было создавать), надо создать конструктор класса. В нем (все конструкторы называются как __init__) должна присутствовать переменная self:
<sourcesyntaxhighlight lang="python">
def __init__ (self):
# команды</sourcesyntaxhighlight>
Если это метод класса (а не метод экземпляра класса), то следует писать @classmethod перед описанием функции (метода класса):
<sourcesyntaxhighlight lang="python">
@classmethod def f ():
# команды</sourcesyntaxhighlight>
 
== Переменные классов ==
# Обращение к переменным класса внутри классов должно начинаться с self.имя_переменной.
# Для того, чтобы переменная не была видна снаружи класса, в ее имени используйте двойное нижнее подчеркивание. Например:
<sourcesyntaxhighlight lang="python">
__a</sourcesyntaxhighlight>
 
== Создание инстансов ==
Инстанс (объект или экземпляр класса) — что то созданной с помощью класса. Общий синтаксис создания объекта:
<sourcesyntaxhighlight lang="python">
имя = класс(параметры_конструктора)</sourcesyntaxhighlight>
Имя — это имя объекта; класс — это имя класса, экземпляр (или объект) которого мы желаем создать; параметры конструктора — параметры функции __init__ данного класса (self при создании объекта писать на надо). Пример:
<sourcesyntaxhighlight lang="python">
class t:
time
Строка 427:
self.time = T
 
a= t(10)</sourcesyntaxhighlight>
 
= Дополнение =
Строка 436:
! Функция !! Описание
|-
| <sourcesyntaxhighlight lang="python">f = open('name.txt','m')</sourcesyntaxhighlight> || Открывает имя. f — переменная. name.txt — имя файла. 'm' режим работы с файлом — вместо m должно стоять r (если только для чтения открыть файл), или если для записи то w.
|-
| <sourcesyntaxhighlight lang="python">a = [k for k in f.readlines()]</sourcesyntaxhighlight> || Считывает все строки из файла и сохраняет в список a. Одна строка файла — один элемент списка.
|}
 
Строка 500:
 
=== Пример рисования ===
<sourcesyntaxhighlight lang="python">
import turtle
 
Строка 516:
turtle.circle(100)
turtle.mainloop()
</syntaxhighlight>
</source>
 
= Алгоритмы =
Строка 523:
=== Определение цветов ===
Определим цвета как три значения в списках:
<sourcesyntaxhighlight lang="python">
c1 = [r, g, b]
c2 = [r, g, b]
</syntaxhighlight>
</source>
r, g, b — числа, соответствующие RGB.
 
=== Mix ===
Смешивание цветов через нахождения их средних значений:
<sourcesyntaxhighlight lang="python">
def Mix(c1, c2):
c3 = [(c1[0]+c2[0])//2, (c1[1]+c2[1])//2, (c1[2]+c2[2])//2]
return c3
</syntaxhighlight>
</source>
 
=== Add ===
Смешивание цветов через суммирование их значений:
<sourcesyntaxhighlight lang="python">
def Add(c1, c2):
c3 = [c1[0]+c2[0], c1[1]+c2[1], c1[2]+c2[2]]
return c3
</syntaxhighlight>
</source>
То же самое, но с учетом силы смешивания Strength (которая колеблется от 0.0 до 1.0):
<sourcesyntaxhighlight lang="python">
def Add(c1, c2, Strength):
c3 = [c1[0]+abs(c1[0]-c2[0])*Strength, c1[1]+abs(c1[1]-c2[1])*Strength, c1[2]+abs(c1[2]-c2[2])*Strength] # Берем по модулю так как разность может быть отрицательной.
return c3
</syntaxhighlight>
</source>
 
=== Subtract ===
Смешивание цветов через вычитание их значений:
<sourcesyntaxhighlight lang="python">
def Substr(c1, c2):
c3 = [c1[0]-c2[0], c1[1]-c2[1], c1[2]-c2[2]]
return c3
</syntaxhighlight>
</source>
 
=== Multiply ===
Смешивание цветов через перемножение их значений:
<sourcesyntaxhighlight lang="python">
def Mult(c1, c2):
c3 = [c1[0]*c2[0], c1[1]*c2[1], c1[2]*c2[2]]
return c3
</syntaxhighlight>
</source>
 
=== Screen ===
Смешивание цветов через перемножение первого компонентного и второго инвертированного:
<sourcesyntaxhighlight lang="python">
def Screen(c1, c2):
c3 = [c1[0]*(255-c2[0]), c1[1]*(255-c2[1]), c1[2]*(255-c2[2])]
return c3
</syntaxhighlight>
</source>
 
=== Lighten ===
Смешивание цветов через выборку наиболее светлых значений компонентов цветов:
<sourcesyntaxhighlight lang="python">
def Lighten(c1, c2):
f = lambda x, y: x if x > y else y
c3 = [f(c1[0], c2[0]), f(c1[1], c2[1]), f(c1[2], c2[2])
return c3
</syntaxhighlight>
</source>
 
=== Darken ===
Смешивание цветов через выборку наиболее темных значений компонентов цветов:
<sourcesyntaxhighlight lang="python">
def Darken(c1, c2):
f = lambda x, y: x if x < y else y
c3 = [f(c1[0], c2[0]), f(c1[1], c2[1]), f(c1[2], c2[2])
return c3
</syntaxhighlight>
</source>
 
= Основы Python в Blender =
Строка 598:
=== Создание объектов ===
Для того чтобы создать объект в Object Mode с помощью Python надо в консоли или в текстовом редакторе (Text Editor) написать следующее:
<sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_имя_add()</sourcesyntaxhighlight>
Имя — название примитива с маленькой буквы. Например:
{| class="wikitable sortable"
Строка 604:
! Код !! Описание
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_plane_add()</sourcesyntaxhighlight> || создать плоскость
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_cube_add()</sourcesyntaxhighlight> || создать куб
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_circle_add()</sourcesyntaxhighlight> || создать окружность
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_uv_sphere_add()</sourcesyntaxhighlight> || создать UV сферу
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_ico_sphere_add()</sourcesyntaxhighlight> ||создать ICO сферу
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_cylinder_add()</sourcesyntaxhighlight> || создать цилиндр
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_cone_add()</sourcesyntaxhighlight> || создать конус
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_torus_add()</sourcesyntaxhighlight> || создать торус
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_grid_add()</sourcesyntaxhighlight> || создать плоскость
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_monkey_add()</sourcesyntaxhighlight> || создать обезьянку
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.lamp_add(type = T)</sourcesyntaxhighlight> || добавить лампу, где T — одно из:
# «POINT»
# «SUN»
Строка 631:
# «AREA»
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.text_add()</sourcesyntaxhighlight> || создать текст
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.armature_add()</sourcesyntaxhighlight> || создать арматуру
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.empty_add(type = T)</sourcesyntaxhighlight> || создать пустышку, где T — ее тип:
# «PLANE_AXES» — Plane Axis
# «ARROWS» — Arrows
Строка 645:
|}
Можно указать сразу и точное положение центра добавляемого объекта:
<sourcesyntaxhighlight lang="python">location=(x, y, z)</sourcesyntaxhighlight>
Например:
<sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_plane_add(location=(x, y, z))</sourcesyntaxhighlight>
Вы можете также установить поворот объекта по каждой из осей с помощью rotation(x, y, z):
<sourcesyntaxhighlight lang="python">bpy.ops.mesh.primitive_plane_add(rotation=(x, y, z))</sourcesyntaxhighlight>
Создание синусоидноподобной фигуры:
<sourcesyntaxhighlight lang="python">import bpy, math
for a in range(-10,10):
bpy.ops.mesh.primitive_uv_sphere_add(location=(a, 0, math.sin(a)))
for a in range(-10,10):
bpy.ops.mesh.primitive_uv_sphere_add(location=(0, a, math.sin(a)))
</syntaxhighlight>
</source>
Визуализация списка списков:
<sourcesyntaxhighlight lang="python">import bpy
matrix = [[10, 2, 3, 3, 6],
[4, 6, 4, 12, 5],
Строка 666:
for x in range(0, 5):
for y in range(0, 5):
bpy.ops.mesh.primitive_plane_add(location = (x*4, y*4, matrix[x][y]))</sourcesyntaxhighlight>
 
=== Затенение ===
Строка 673:
! Код !! Описание
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.shade_smooth()</sourcesyntaxhighlight> || установить затенение Smooth
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.shade_flat()</sourcesyntaxhighlight> || установить затенение Flat
|}
 
Строка 683:
! Функция !! Описание
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.transform.translate()</sourcesyntaxhighlight> || перемещение активных объектов
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.transform.rotate()</sourcesyntaxhighlight> || вращение активных объектов
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.transform.resize()</sourcesyntaxhighlight> || масштабирование активных объектов
|}
У этих трех функций есть следующие параметры:
Строка 720:
=== Копирование ===
Копирование осуществляется функцией:
<sourcesyntaxhighlight lang="python">bpy.ops.object.dublicate_move()</sourcesyntaxhighlight>
Параметрами функции являются словари OBJECT_OT_dublicate и TRANSFORM_OT_translate.
<ol>
<li>
В первом из них содержится информация о том является ли это копирование копированием объекта или созданием связанной его копии:
<sourcesyntaxhighlight lang="python">OBJECT_OT_dublicate = {"linked":False, "mode":"TRANSLATION"}</sourcesyntaxhighlight>
Ключ «linked» позволяет установить как будет копироваться объект — если равно True, то создасться его связанная копия, иначе будет скопирован весь объект.
</li>
<li>Во втором хранятся сами данные преобразования объекта:
<sourcesyntaxhighlight lang="python">TRANSFORM_OT_translate = {"value":(x, y, z), "constraint_axis":(cX, cY, cZ), "constraint_orientation":"T", "proportional":"ED", "proportional_edit_falloff":"FT", "proportional_size":S}</sourcesyntaxhighlight>
Здесь:
# x, y, z — значения перемещения по каждой из осей
Строка 740:
</ol>
Пример использования функции:
<sourcesyntaxhighlight lang="python">bpy.ops.object.dublicate_move(OBJECT_OT_dublicate = {"linked":False, "mode":"TRANSLATION"}, TRANSFORM_OT_translate = {"value":(0, 2, 2), "constraint_axis":(True, False, False), "constraint_orientation":"GLOBAL", "proportional":"ENABLE", "proportional_edit_falloff":"SPHERE", "proportional_size":4})</sourcesyntaxhighlight>
 
=== Создание сцен ===
Строка 748:
! Код !! Описание
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.scenes.new(type = T)</sourcesyntaxhighlight> || создает новую сцену, причем T — тип сцены и может быть одним из:
# <nowiki>"NEW"</nowiki> — соответствует New
# <nowiki>"EMPTY"</nowiki> — соответствует Copy Settings
Строка 754:
# <nowiki>"FULL_COPY"</nowiki> соответствует Full Copy
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.scenes.remove()</sourcesyntaxhighlight> || удаляет активную сцену
|}
 
Строка 762:
! Код !! Описание
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.mode_set(mode="OBJECT")</sourcesyntaxhighlight> || установить режим Object Mode
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.mode_set(mode="EDIT")</sourcesyntaxhighlight> || установить режим Edit Mode
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.mode_set(mode="SCULPT")</sourcesyntaxhighlight> || установить режим Sculpt Mode
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.mode_set(mode="VERTEX_PAINT")</sourcesyntaxhighlight> || установить режим Vertex Paint
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.mode_set(mode="WEIGHT_PAINT")</sourcesyntaxhighlight> || установить режим Weight Paint
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.mode_set(mode="TEXTURE_PAINT")</sourcesyntaxhighlight> || установить режим Texture Paint
|}
 
Строка 780:
! Код !! Описание
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.vertex_group_normalize()</sourcesyntaxhighlight> || нормализировать активную группу вершин
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.vertex_group_mirror()</sourcesyntaxhighlight> || отразить активную группу вершин
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.vertex_group_invert()</sourcesyntaxhighlight> || инвертировать активную группу вершин
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.vertex_group_clean()</sourcesyntaxhighlight> || очистить активную группу вершин (или все)
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.vertex_group_quantize()</sourcesyntaxhighlight> || установить веса через интервал
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.paint.weight_gradient()</sourcesyntaxhighlight> || нарисовать градиент
|}
 
Строка 799:
! Код !! Примечание
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.palette.color_add()</sourcesyntaxhighlight> || добавить новый цвет в активную палитру
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.palette.color_delete()</sourcesyntaxhighlight> || удалить цвет из активной палитру
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.palette.new()</sourcesyntaxhighlight> || добавить новую палитру
|}
 
Строка 812:
! Код !! Текст заголовка
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.game_property_new(name = "P")</sourcesyntaxhighlight> || добавить новое игровое свойство объекту с именем «P»
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.game_property_move(index = i, direction = 'UP')</sourcesyntaxhighlight> || передвинуть вверх свойство с индексом i (индексы считаются от верхнего свойства к нижнему с 0)
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.game_property_move(index = i, direction = 'DOWN')</sourcesyntaxhighlight> || передвинуть вниз свойство с индексом i (индексы считаются от верхнего свойства к нижнему с 0)
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.game_property_remove(index = i)</sourcesyntaxhighlight> || удалить свойство с индексом i
|}
 
Строка 826:
! Код !! Текст заголовка
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.material_slot_add()</sourcesyntaxhighlight> || добавить новый слот материала
|-
| <sourcesyntaxhighlight lang="python">bpy.ops.object.material_slot_remove()</sourcesyntaxhighlight> || удалить активный слот материала
|}
 
Строка 887:
=== Типы движка ===
Ниже «name» — имя любой сцены, с данными которой будем работать. Через словарь bpy.data.scenes можно получить имя используемого для рендеринга движка:
<sourcesyntaxhighlight lang="python">bpy.data.scenes["name"].render.engine</sourcesyntaxhighlight>
{| class="wikitable sortable"
|-
! Движок !! Название, хранящееся в bpy.data.scenes[«name»].render.engine
|-
| Blender Engine || <sourcesyntaxhighlight lang="python">"BLENDER_GAME"</sourcesyntaxhighlight>
|-
| Blender Render || <sourcesyntaxhighlight lang="python">"BLENDER_RENDER"</sourcesyntaxhighlight>
|-
| Cycles Render || <sourcesyntaxhighlight lang="python">"CYCLES"</sourcesyntaxhighlight>
|-
| Blend4Web || <sourcesyntaxhighlight lang="python">"BLEND4WEB"</sourcesyntaxhighlight>
|}
Функция, устанавливающая тип движка по его номеру:
<sourcesyntaxhighlight lang="python">
def SetEngine(scn, i):
engines = ['BLENDER_GAME', 'BLENDER_RENDER', 'CYCLES', 'BLEND4WEB']
Строка 909:
i = 3
bpy.data.scenes[scn].render.engine = engines[i]
</syntaxhighlight>
</source>
 
=== Класс bpy.types.ID ===
Строка 927:
 
Получить доступ к сцене можно по ее имени — ключу в словаре scenes:
<sourcesyntaxhighlight lang="python">bpy.data.scenes["key"]</sourcesyntaxhighlight>
{| class="wikitable sortable"
|-
Строка 1036:
|}
Изменение имени камеры:
<sourcesyntaxhighlight lang="python">bpy.data.cameras['Camera'].name = "MyCam1"</sourcesyntaxhighlight>
 
====== Данные текстур ======
Строка 1068:
|}
Изменение имени текстуры:
<sourcesyntaxhighlight lang="python">bpy.data.textures['Tex'].name = "MyCam1"</sourcesyntaxhighlight></li>
<li>
Класс текстуры с картинкой — bpy.types.ImageTexture(Texture).
Строка 1217:
|}
Изменение положения объекта по оси X:
<sourcesyntaxhighlight lang="python">bpy.data.objects["name"].location[0] = 1</sourcesyntaxhighlight>
 
==== Объекты и материалы ====
Строка 1242:
|}
Получение имени активного материала:
<sourcesyntaxhighlight lang="python">a = bpy.data.objects["name"].active_material</sourcesyntaxhighlight>
Данные материалов хранятся в словаре bpy.data.materials. Ниже «mat» — имя любого материала.
 
Строка 1314:
|}
Изменение имени материала:
<sourcesyntaxhighlight lang="python">bpy.data.materials["mat"].name = "MyMat1"</sourcesyntaxhighlight>
 
==== Режимы редактирования ====
Строка 1326:
! Код !! Примечание
|-
| <sourcesyntaxhighlight lang="python">bpy.data.scenes["Scene"].tool_settings.unified_paint_settings.weight</sourcesyntaxhighlight> || общий вес для всех кистей (если используется как общий)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.scenes["Scene"].tool_settings.unified_paint_settings.size</sourcesyntaxhighlight> || общий радиус для всех кистей (если используется как общий)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.scenes["Scene"].tool_settings.unified_paint_settings.strength</sourcesyntaxhighlight> || общая сила для всех кистей (если используется как общая)
|}
{| class="wikitable sortable"
Строка 1336:
! Код !! Примечание
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].weight</sourcesyntaxhighlight> || общий вес для всех кистей (если используется не как общий)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].size</sourcesyntaxhighlight> || общий радиус для всех кистей (если используется не как общий)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].strength</sourcesyntaxhighlight> || общая сила для всех кистей (если используется не как общая)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].vertex_tool</sourcesyntaxhighlight> || режим смешивания кисти, может быть одним из:
# «MIX» — Mix
# «ADD» — Mix
Строка 1351:
# «DARKEN» — Darken
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].stroke_method</sourcesyntaxhighlight> || режим рисования кисти, может быть одним из:
# «DOTS» — Dots
# «SPACE» — Space
Строка 1358:
# «CURVE» — Curve
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].jitter</sourcesyntaxhighlight> || колебания кисти при рисовании
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].use_smooth_stroke</sourcesyntaxhighlight> || использовать ли отставание кисти
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].smooth_stroke_radius</sourcesyntaxhighlight> || длина, на которую отстает кисти
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].smooth_stroke_factor</sourcesyntaxhighlight> || сила сглаживания штрихов Factor
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].spacing</sourcesyntaxhighlight> || расстояние между двумя штрихами при режиме Spacing
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].rate</sourcesyntaxhighlight> || интервалы между срабатываниями кисти распылителя при режиме Airbrush
|}
 
Строка 1377:
! Код !! Примечание
|-
| <sourcesyntaxhighlight lang="python">bpy.data.scenes["Scene"].tool_settings.unified_paint_settings.size</sourcesyntaxhighlight> || общий радиус для всех кистей (если используется как общий)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.scenes["Scene"].tool_settings.unified_paint_settings.strength</sourcesyntaxhighlight> || общая сила для всех кистей (если используется как общая)
|}
{| class="wikitable sortable"
Строка 1385:
! Код !! Примечание
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].size</sourcesyntaxhighlight> || общий радиус для всех кистей (если используется не как общий)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].strength</sourcesyntaxhighlight> || общая сила для всех кистей (если используется не как общая)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].vertex_tool</sourcesyntaxhighlight> || режим смешивания кисти, может быть одним из:
# «MIX» — Mix
# «ADD» — Mix
Строка 1398:
# «DARKEN» — Darken
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].stroke_method</sourcesyntaxhighlight> || режим рисования кисти, может быть одним из:
# «DOTS» — Dots
# «SPACE» — Space
Строка 1405:
# «CURVE» — Curve
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].jitter</sourcesyntaxhighlight> || колебания кисти при рисовании
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].use_smooth_stroke</sourcesyntaxhighlight> || использовать ли отставание кисти
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].smooth_stroke_radius</sourcesyntaxhighlight> || длина, на которую отстает кисти
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].smooth_stroke_factor</sourcesyntaxhighlight> || сила сглаживания штрихов Factor
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].spacing</sourcesyntaxhighlight> || расстояние между двумя штрихами при режиме Spacing
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].rate</sourcesyntaxhighlight> || интервалы между срабатываниями кисти распылителя при режиме Airbrush
|}
 
Строка 1424:
! Код !! Примечание
|-
| <sourcesyntaxhighlight lang="python">bpy.data.brushes["B"].color</sourcesyntaxhighlight> || цвет кисти
|-
| <sourcesyntaxhighlight lang="python">bpy.data.palettes["P"].name</sourcesyntaxhighlight> || имя палитры
|-
| <sourcesyntaxhighlight lang="python">bpy.data.palettes["P"].use_fake_user</sourcesyntaxhighlight> || использовать ли фейкового пользователя для палитры
|}
 
Строка 1437:
! Код !! Примечание
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.physics_type</sourcesyntaxhighlight> || тип физики объекта
# «NO_COLLISION» — No Collision
# «STATIC» — Static
Строка 1444:
# «SENSOR» — Sensor
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.use_actor</sourcesyntaxhighlight> || является ли объект актером
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.use_ghost</sourcesyntaxhighlight> || является ли объект призраком
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.use_record_animation</sourcesyntaxhighlight> || записывать ли анимацию объекта (если объект не физический)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.hide_render</sourcesyntaxhighlight> || сделать ли объект невидимым
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.radius</sourcesyntaxhighlight> || радиус сферы (которой объект взаимодействует с другими объектами)
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.use_anisotropic_friction</sourcesyntaxhighlight> || использовать ли анизотропное трение
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.friction_coefficients[0]</sourcesyntaxhighlight> || сила анизотропного трения по оси X
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.friction_coefficients[1]</sourcesyntaxhighlight> || сила анизотропного трения по оси Y
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.friction_coefficients[2]</sourcesyntaxhighlight> || сила анизотропного трения по оси Z
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.use_collision_bounds</sourcesyntaxhighlight> || использовать ли границы столкновения отличные от по умолчанию
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.collision_bounds_type</sourcesyntaxhighlight> || тип границ столкновения
# «TRIANGLE_MESH» — Triangle Mesh
# «CONVEX_HULL» — Convex Hull
Строка 1473:
# «CAPSULE» — Capsule
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.collision_margin</sourcesyntaxhighlight> || маленькое расстояние от границ объекта Margin
|-
| <sourcesyntaxhighlight lang="python">bpy.data.objects["name"].game.use_collision_compound</sourcesyntaxhighlight> || добавлять ли потомка к границам столкновения
|}
 
=== Переобозначения ===
Возможно укорачивать код с введением своих обозначений, например:
<sourcesyntaxhighlight lang="python">
blCams = bpy.data.cameras
blTexs = bpy.data.textures
blObjs = bpy.data.objects
blMats = bpy.data.materials
</syntaxhighlight>
</source>
Потом, например, вместо:
<sourcesyntaxhighlight lang="python">
bpy.data.materials["Mat1"].emit
</syntaxhighlight>
</source>
можно будет писать:
<sourcesyntaxhighlight lang="python">
blMats["Mat1"].emit
</syntaxhighlight>
</source>
 
= Профессиональный уровень =
Строка 1597:
|}
Получить контроллер, управляющий скриптом можно так:
<sourcesyntaxhighlight lang="python">a = bge.logic.GetCurrentController()</sourcesyntaxhighlight>
А получить объект, у которого данный контроллер можно так:
<sourcesyntaxhighlight lang="python">obj = a.owner</sourcesyntaxhighlight>
 
=== Описание актуаторов ===
Строка 1656:
|}
Активировать актуатор можно через тот контроллер, к которому он подсоединен:
<sourcesyntaxhighlight lang="python">с.activate(a)</sourcesyntaxhighlight>
Где c — контроллер, a — актуатор.
Деактивация происходит подобным образом:
<sourcesyntaxhighlight lang="python">с.deactivate(a)</sourcesyntaxhighlight>
Где c — контроллер, a — актуатор.
 
Строка 1775:
|}
Пример скрипта, который автоматически раскрашивает вершины, в зависимости от координаты Z:
<sourcesyntaxhighlight lang="python">from bge import logic
import math
cont = logic.getCurrentController() # получение контроллера, который запустил этот скрипт
Строка 1793:
vertex.color = [0.8, 0.744, 0.074, 1.0]
else:
vertex.color = [0.8, 0.077, 0.87, 1.0]</sourcesyntaxhighlight>
Результат работы скрипта:
 
Строка 1844:
===== Алфабитные клавиши =====
В общем пишится:
<sourcesyntaxhighlight lang="python">bge.events.имя_клавишиKEY</sourcesyntaxhighlight>
{| class="wikitable sortable"
|-
Строка 1904:
=== Класс bge.types.KX_Scene(PyObjectPlus) ===
Класс bge.types.KX_Scene(PyObjectPlus) позволяет получить данные о сцене. А для получения сцены, в которой запущен данный скрипт следует писать:
<sourcesyntaxhighlight lang="python">from bge import logic
a = logic.getCurrentScene()</sourcesyntaxhighlight>
Здесь a — объект сцены-владельца скрипта.
<ol>
Строка 2086:
<ol>
<li>Функция, которая позволяет проверить где находится точка по отношению к frustum имеет следующий вид:
<sourcesyntaxhighlight lang="python">cam.sphereInsideFrustum([x, y, z])</sourcesyntaxhighlight>
Тут x, y, z — координаты центра точки.</li>
<li>Функция, которая позволяет проверить где находится сфера по отношению к frustum имеет следующий вид:
<sourcesyntaxhighlight lang="python">cam.sphereInsideFrustum([x, y, z], r)</sourcesyntaxhighlight>
Где x, y, z — координаты центра сферы, а r — ее радиус.</li>
<li>Функция, которая позволяет проверить где находится параллелепипед по отношению к frustum имеет такой вид:
<sourcesyntaxhighlight lang="python">cam.boxInsideFrustum(box)</sourcesyntaxhighlight>
Здесь box — список, хранящий 8 списков (в которых хранятся по 4 координаты каждой точки). Например:
<sourcesyntaxhighlight lang="python">box = []
box.append([-1.0, -1.0, -1.0])
box.append([-1.0, -1.0, 1.0])
Строка 2102:
box.append([ 1.0, -1.0, 1.0])
box.append([ 1.0, 1.0, -1.0])
box.append([ 1.0, 1.0, 1.0])</sourcesyntaxhighlight>
</li>
</ol>
Строка 2136:
|}
Настраивание лампы так, что она станет направленным источником света и будет светить красным:
<sourcesyntaxhighlight lang="python">
import bge
 
Строка 2145:
light.energy = 3.0
light.color = [1.0, 0.0, 0.0]
</syntaxhighlight>
</source>
Изменение яркости в зависимости от расстояния по закону синуса:
<sourcesyntaxhighlight lang="python">
import bge, math
 
Строка 2158:
 
main()
</syntaxhighlight>
</source>
 
===== Модели изменения силы света =====
Строка 2164:
# dist — расстояние на котором сила света не равна 0.
# plus_d — расстояние на котором сила света постепенно линейно возрастает от минимальной (min_energy) до максимальной (max_energy).
<sourcesyntaxhighlight lang="python">
import bge, math
 
Строка 2186:
 
main()
</syntaxhighlight>
</source>
# (d-const_dist) — узнаем дистанцию между объектом и лампой, отбросив расстояние const_dist
# plus_d-(d-const_dist) — разность между расстояниями для того, чтобы сила света увеличивалась, а не уменьшалась по приближению объекта
Строка 2194:
=== Изменение материалов с помощью bge.types.KX_BlenderMaterial(PyObjectPlus) ===
С помощью данного класса можно работать с материалами. Для доступа к конкретному материалу следует писать:
<sourcesyntaxhighlight lang="python">obj.meshes[m].materials[n]</sourcesyntaxhighlight>
meshes — список, в котором хранятся ссылки на используемые в объекте меши, materials — список материалов, m — индекс меша для которого следует получить все имеющиеся на нем материалы, n — индекс материала. Причем, порядок элементов в meshes и materials соответствует друг другу.
Ниже M — материал.
Строка 2237:
|}
Пример создания меша:
<sourcesyntaxhighlight lang="python">
bm = bmesh.new()</sourcesyntaxhighlight>
В классе bmesh.types.BMesh есть такие последовательности:
# verts — список вершин меша
Строка 2358:
=== Работа с цветом с применением mathutils.Color ===
Этот класс нужен для работы с цветом. Объект цвет создается так:
<sourcesyntaxhighlight lang="python">n = mathutils.Color(r, g, b)</sourcesyntaxhighlight>
n — имя объекта цвета; r, g и b — значения компонентов цвета.
 
Также можно узнавать r, g, b, h, s или v так:
<sourcesyntaxhighlight lang="python">n.c</sourcesyntaxhighlight>
Где c может быть одним из:
# r
Строка 2373:
=== Класс для работы с углами mathutils.Euler ===
С помощью mathutils.Euler Вы можете создавать углы Эйлера. Для создания инстанса класса пишите:
<sourcesyntaxhighlight lang="python">n = mathutils.Euler(angles, O)</sourcesyntaxhighlight>
angles — список, состоящий из трех углов; порядок, в котором указываются углы устанавливается вторым параметром и может быть равен:
# 'XYZ'
Строка 2381:
# 'ZXY'
Например:
<sourcesyntaxhighlight lang="python">Euler1 = mathutils.Euler([0,0,math.radians(45)], order='XYZ')</sourcesyntaxhighlight>
Получить значение аттрибутов можно следующим образом:
{| class="wikitable sortable"
Строка 2410:
=== Работа с векторами через класс mathutils.Vector ===
Класс для работы с векторами. Создается вектор так:
<sourcesyntaxhighlight lang="python">n = mathutils.Vector(v)</sourcesyntaxhighlight>
Где v — список, состоящий из 3-х компонентов вектора. Например:
<sourcesyntaxhighlight lang="python">n = mathutils.Vector((0.0,3.0,5.0))</sourcesyntaxhighlight>
Ниже n — вектор.
{| class="wikitable sortable"
Строка 2477:
|}
Включение видимости имен у всех выделенных объектов, положение которых по оси X>0:
<sourcesyntaxhighlight lang="python">
import bpy
 
Строка 2486:
if C.selected_objects[i].location.x > 0:
C.selected_objects[i].show_name = True
</syntaxhighlight>
</source>
 
== Системные данные ==
Строка 2514:
 
= Полезные скрипты =
<sourcesyntaxhighlight lang="python">
# Скрипт создания объектов по кольцу
import bpy
Строка 2553:
bpy.ops.mesh.primitive_cone_add(location=(x, y, z))
else:
bpy.ops.mesh.primitive_torus_add(location=(x, y, z))</sourcesyntaxhighlight>
<sourcesyntaxhighlight lang="Python">
# Визуализация молекул
from math import degrees, acos
Строка 2576:
     bpy.ops.mesh.primitive_cylinder_add(radius=0.3, depth=(r2-r1).length,location=(r3.x,r3.y,r3.z))
     bpy.ops.transform.rotate(value=(angle,), axis=rot_axis)
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="Python">
# Класс для работы с векторами
# coding: utf8
Строка 2640:
    print "normal(%s): %s" % (v2, v2.normal())
    print "angle(%s, %s): %f" % (v2, v1, v2.angle(v1))
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="python">
# Передвижение объекта
import bge
Строка 2670:
 
main()
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="python"># Изменение цвета тумана на красный.
import bge
 
sce = bge.logic.getCurrentScene()
 
sce.world.mistColor = [1.0, 0.0, 0.0]</sourcesyntaxhighlight>
<sourcesyntaxhighlight lang="python">
# Проигрывание музыки по окончанию рендеринга
import bpy
Строка 2688:
 
bpy.app.handlers.render_complete.append(play)
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="python">
# Выключение компьютера по окончанию рендеринга (вариант для Windows)
import bpy
Строка 2698:
 
bpy.app.handlers.render_complete.append(shutdown)
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="python">
# Выключение компьютера по окончанию рендеринга (вариант для Linux)
import bpy
Строка 2710:
 
bpy.app.handlers.render_complete.append(shutdown)
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="python">
import math
import bpy
Строка 2765:
# Пример использования:
EditMesh(-1, 0, 0, 0, 0, -1, 0.4, False, False, True)
</syntaxhighlight>
</source>
<!--<sourcesyntaxhighlight lang="python">
# Вывод текста Hello world!
# импорт игровых модулей
Строка 2802:
blf.size(font_id, 50, 72)
blf.draw(font_id, "Hello World")
</syntaxhighlight>
</source>
-->
 
Строка 2837:
| shiftY || искривление по оси Y
|}
<sourcesyntaxhighlight lang="python">
from Blender import Camera, Object, Scene
cam = Camera.New("ortho") # создаем камеру (не указав на какой сцене она будет располагаться)
scn = Scene.GetCurrent() # получаем объект текущей сцены
obj = scn.objects.new(cam) # добавляем камеру на сцену scn
</syntaxhighlight>
</source>
 
=== Подмодуль Blender.Lamp ===
Строка 2865:
| type || тип лампы («Lamp», «Sun», «Spot», «Hemi», «Area»)
|}
<sourcesyntaxhighlight lang="python">
from Blender import Lamp, Scene
lamp1 = Lamp.New("Spot") # создаем лампу (не указав на какой сцене она будет располагаться)
scn = Scene.GetCurrent() # получаем объект текущей сцены
obj = scn.objects.new(lamp1) # добавляем лампу на сцену scn
</syntaxhighlight>
</source>
 
=== Подмодуль Blender.Object ===
Строка 2910:
| sel || True, если объект выделен, иначе False
|}
<sourcesyntaxhighlight lang="python">
import Blender
scn = Blender.Scene.GetCurrent() # получает текущую сцену
Строка 2918:
 
Blender.Redraw() # перерисовывает все 3D окна
</syntaxhighlight>
</source>
 
=== Подмодуль Blender.Scene ===