Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - [7]
Используйте этот рисунок как текстуру и измените имя на color.png:
>#----------------------------------------------------------
># File texture.py
>#----------------------------------------------------------
>import bpy, os
>def run(origin):
> # Загрузка файла с рисунком. Измените здесь, если каталог snippets
> # расположен не в Вашем домашнем каталоге.
> realpath = os.path.expanduser('~/snippets/textures/color.png')
> try:
> img = bpy.data.images.load(realpath)
> except:
> raise NameError("Cannot load image %s" % realpath)
> # Создание текстуры image из загруженного рисунка
> cTex = bpy.data.textures.new('ColorTex', type = 'IMAGE')
> cTex.image = img
> # Создание процедурной текстуры
> sTex = bpy.data.textures.new('BumpTex', type = 'STUCCI')
> sTex.noise_basis = 'BLENDER_ORIGINAL'
> sTex.noise_scale = 0.25
> sTex.noise_type = 'SOFT_NOISE'
> sTex.saturation = 1
> sTex.stucci_type = 'PLASTIC'
> sTex.turbulence = 5
> # Создание текстуры blend с цветовой полосой (color ramp)
> # Не знаю, как добавлять элементы к полосе, так что сейчас только два
> bTex = bpy.data.textures.new('BlendTex', type = 'BLEND')
> bTex.progression = 'SPHERICAL'
> bTex.use_color_ramp = True
> ramp = bTex.color_ramp
> values = [(0.6, (1,1,1,1)), (0.8, (0,0,0,1))]
> for n,value in enumerate(values):
> elt = ramp.elements[n]
> (pos, color) = value
> elt.position = pos
> elt.color = color
> # Создание материала
> mat = bpy.data.materials.new('TexMat')
> # Добавление текстурного слота для цветной текстуры
> mtex = mat.texture_slots.add()
> mtex.texture = cTex
> mtex.texture_coords = 'UV'
> mtex.use_map_color_diffuse = True
> mtex.use_map_color_emission = True
> mtex.emission_color_factor = 0.5
> mtex.use_map_density = True
> mtex.mapping = 'FLAT'
> # Добавление текстурного слота для bump-текстуры
> mtex = mat.texture_slots.add()
> mtex.texture = sTex
> mtex.texture_coords = 'ORCO'
> mtex.use_map_color_diffuse = False
> mtex.use_map_normal = True
> #mtex.rgb_to_intensity = True
> # Добавление текстурного слота
> mtex = mat.texture_slots.add()
> mtex.texture = bTex
> mtex.texture_coords = 'UV'
> mtex.use_map_color_diffuse = True
> mtex.diffuse_color_factor = 1.0
> mtex.blend_type = 'MULTIPLY'
> # Создание нового куба и наложение на него UV-раскладки
> bpy.ops.mesh.primitive_cube_add(location=origin)
> bpy.ops.object.mode_set(mode='EDIT')
> bpy.ops.uv.smart_project()
> bpy.ops.object.mode_set(mode='OBJECT')
> # Добавление материала к текущему объекту
> ob = bpy.context.object
> me = ob.data
> me.materials.append(mat)
> return
>if __name__ == "__main__":
> run((0,0,0))
Эта программа добавляет три материала к одному мешу.
>#----------------------------------------------------------
># File multi_material.py
>#----------------------------------------------------------
>import bpy
>def run(origin):
> # Создание трёх материалов
> red = bpy.data.materials.new('Red')
> red.diffuse_color = (1,0,0)
> blue = bpy.data.materials.new('Blue')
> blue.diffuse_color = (0,0,1)
> yellow = bpy.data.materials.new('Yellow')
> yellow.diffuse_color = (1,1,0)
> # Создание меша и назначение материалов
> bpy.ops.mesh.primitive_uv_sphere_add(
> segments = 16,
> ring_count = 8,
> location=origin)
> ob = bpy.context.object
> ob.name = 'MultiMatSphere'
> me = ob.data me.materials.append(red)
> me.materials.append(blue)
> me.materials.append(yellow)
> # Назначение материалов граням
> for f in me.faces:
> f.material_index = f.index % 3
> # Установка левой половины сферы в плавное затенение,
> # правой половины — в плоское затенение
> for f in me.faces:
> f.use_smooth = (f.center[0] < 0)
>if __name__ == "__main__":
> run((0,0,0))
Эта программа добавляет два UV-слоя к мешу.
>#----------------------------------------------------------
># File uvs.py
>#----------------------------------------------------------
>import bpy import os
>def createMesh(origin):
> # Создание меша и объекта
> me = bpy.data.meshes.new('TetraMesh')
> ob = bpy.data.objects.new('Tetra', me)
> ob.location = origin
> # Привязка объекта к сцене
> scn = bpy.context.scene
> scn.objects.link(ob)
> scn.objects.active = ob scn.update()
> # Списки вершин и граней
> verts = [
> (1.41936, 1.41936, -1),
> (0.589378, -1.67818, -1),
> (-1.67818, 0.58938, -1),
> (0, 0, 1)
> ]
> faces = [(1,0,3), (3,2,1), (3,0,2), (0,1,2)]
> # Создание меша из передаваемых списков вершин, рёбер, граней.
> # Или рёбра или грани должны быть [], или Вам нужны проблемы
> me.from_pydata(verts, [], faces)
> # Обновление меша с новыми данными
> me.update(calc_edges=True)
> # Первый текстурный слой: Главная UV текстура (UVMain)
> texFaces = [
> [(0.6,0.6), (1,1), (0,1)],
> [(0,1), (0.6,0), (0.6,0.6)],
> [(0,1), (0,0), (0.6,0)],
> [(1,1), (0.6,0.6), (0.6,0)]
> ]
> uvMain = createTextureLayer("UVMain", me, texFaces)
> # Второй текстурный слой: проекция спереди (UVFront)
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.