معرفی کتابخانه bpy (بلندر پایتون) + کد و تصویر _ قسمت دوم

معرفی کتابخانه bpy (بلندر پایتون) + کد و تصویر _ قسمت دوم

مقدمه

به نام خدا و سلام خدمت همه‌ی همراهان عزیز بلندر فارسی. در این مقاله می‌خواهیم به ادامه مقاله قبل که یک ویژگی جذاب در نرم‌افزار قدرتمند بلندر یعنی یکی از کتابخانه های پایتون در بلندر (بلندر پایتون)است، بپردازیم. این قابلیت جالب بلندر باعث شده کسانی که به برنامه نویسی و گرافیک علاقه‌مند هستند بتوانند به واسطه کدنویسی، انیمیشن‌سازی کنند. زبان برنامه نویسی که در بلندر استفاده می‌شود پایتون است. پس ما کتابخانه bpy (بلندر پایتون) را به شما معرفی می‌کنیم.

ادغام

اسکریپت‌های پایتون می‌توانند به روش های زیر با بلندر ادغام شوند:

  • با تعریف موتور رندر.
  • با تعریف عملگرها.
  • با تعریف منوها ، هدرها و پنل‌ها.
  • با قرار دادن دکمه‌های جدید در منوها ، هدرها و پنل‌های موجود.

در پایتون ، این کار با تعریف کلاس انجام می‌شود ، که یک زیر کلاس از نوع موجود است.

مثال اپراتور :

import bpy


def main(context):
    for ob in context.scene.objects:
        print(ob)


class SimpleOperator(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"

    @classmethod
    def poll(cls, context):
        return context.active_object is not None

    def execute(self, context):
        main(context)
        return {'FINISHED'}


def register():
    bpy.utils.register_class(SimpleOperator)


def unregister():
    bpy.utils.unregister_class(SimpleOperator)


if __name__ == "__main__":
    register()

    # test call
    bpy.ops.object.simple_operator()

وقتی این اسکریپت اجرا شد ، SimpleOperator در بلندر ثبت شده‌است و می‌توان آن را از طریق جستجوگر اپراتور فراخوانی کرد یا به نوار ابزار اضافه کرد.

برای اجرای اسکریپت:

  1. بلندر را شروع کرده و به فضای کار Scripting بروید.
  2. برای ایجاد بلوک داده جدید متن ، روی دکمه جدید در ویرایشگر متن کلیک کنید.
  3. کد را از بالا کپی کرده و در ویرایشگر متن جایگذاری کنید.
  4. روی دکمه Run Script کلیک کنید.
  5. نشانگر خود را به 3D Viewport منتقل کنید ، منوی جستجوی اپراتور را باز کنید و “Simple” را تایپ کنید.
  6. روی مورد “Simple Operator” که در جستجو پیدا شده است کلیک کنید.
مطالعه بیشتر
معرفی کتابخانه bpy (بلندر پایتون) + کد و تصویر _ قسمت اول

مثال پنل:

پانل ها مانند یک اپراتور به عنوان کلاس ثبت می‌شوند. به متغیرهای اضافی bl_ که برای تنظیم بافتی که در آن نمایش داده می‌شوند ، توجه کنید.

import bpy


class HelloWorldPanel(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Hello World Panel"
    bl_idname = "OBJECT_PT_hello"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

    def draw(self, context):
        layout = self.layout

        obj = context.object

        row = layout.row()
        row.label(text="Hello world!", icon='WORLD_DATA')

        row = layout.row()
        row.label(text="Active object is: " + obj.name)
        row = layout.row()
        row.prop(obj, "name")

        row = layout.row()
        row.operator("mesh.primitive_cube_add")


def register():
    bpy.utils.register_class(HelloWorldPanel)


def unregister():
    bpy.utils.unregister_class(HelloWorldPanel)


if __name__ == "__main__":
    register()

برای اجرای اسکریپت:

  1. بلندر را شروع کرده و به فضای کار Scripting بروید.
  2. برای ایجاد بلوک داده جدید متن ، روی دکمه جدید در ویرایشگر متن کلیک کنید.
  3. کد را از بالا کپی کرده و در ویرایشگر متن جایگذاری کنید.
  4. روی دکمه Run Script کلیک کنید.

برای مشاهده نتایج:

  1. مکعب پیش فرض را انتخاب کنید.
  2. روی نماد Object Properties در پانل دکمه‌ها کلیک کنید (سمت راست ، به عنوان یک مکعب کوچک ظاهر می شود).
  3. برای دیدن پانلی به نام “Hello World Panel” به پایین بروید.
  4. با تغییر نام شی ، قسمت Hello World Panel: Hello World panel نیز به روز می شود.

به توزیع ردیف و برچسب و خصوصیاتی که از طریق کد تعریف شده اند توجه کنید.

انواع (types)

بلندر تعدادی از انواع پایتون را تعریف می‌کند اما از انواع بومی پایتون نیز استفاده می‌کند. Blender’s Python API را می‌توان به سه دسته تقسیم کرد.

انواع بومی (Native Types)

در موارد ساده برگرداندن یک عدد یا یک رشته به عنوان یک نوع سفارشی دست و پا گیر است ، بنابراین به عنوان انواع معمولی پایتون قابل دسترسی است.

  • Blender float, int, boolean -> float, int, boolean
  • Blender enumerator -> string
C.object.rotation_mode = 'AXIS_ANGLE'
  • Blender enumerator (multiple) -> set of strings
# setting multiple camera overlay guides
bpy.context.scene.camera.data.show_guide = {'GOLDEN', 'CENTER'}

# passing as an operator argument for report types
self.report({'WARNING', 'INFO'}, "Some message!")

انواع داخلی (Internal Types)

bpy.types.bpy_struct برای بلوک‌های داده و مجموعه‌های بلندر استفاده‌می‌شود. همچنین برای داده‌هایی که دارای ویژگی‌های خاص خود هستند: مجموعه‌ها ، مش‌ها ، استخوان‌ها ، صحنه‌ها و غیره.

مطالعه بیشتر
3 روش تکثیر اشیاء در نرم افزار بلندر + تصویر

دو نوع اصلی وجود دارد که داده‌های بلندر را پیچیده می‌کند ، یکی برای بلوک‌های داده (که در داخل با نام bpy_struct شناخته می‌شود) ، دیگری برای خواص.

bpy.context.object
bpy.data.objects['Cube']
C.scene.objects
bpy.data.scenes['Scene'].objects

توجه داشته باشید که این نوع داده‌های بلندر را ارجاع می‌دهند تا بلافاصله اصلاح شوند.

انواع Mathutils

بردارها ، کواترنیون‌ها ، زاویه‌های اویلر ، ماتریس و انواع رنگ از طریق ریاضی قابل دسترسی هستند. برخی از ویژگی‌ها مانند bpy.types.Object.location ، bpy.types.PoseBone.rotation_euler و bpy.types.Scene.cursor_location را می‌توان به عنوان انواع ریاضیات ویژه‌ای که می‌توانند با هم استفاده شوند و به روش‌های مختلف مفید دستکاری شوند ، قابل دسترسی است.

نمونه ای از ماتریس ، ضرب بردار:

bpy.context.object.matrix_world @ bpy.context.object.data.verts[0].co

انواع mathutils به داده‌های داخلی Blender اشاره دارند تا بتوان دوباره تغییرات را اعمال کرد.

مثال:

# modifies the Z axis in place.
bpy.context.object.location.z += 2.0

# location variable holds a reference to the object too.
location = bpy.context.object.location
location *= 2.0

# Copying the value drops the reference so the value can be passed to
# functions and modified without unwanted side effects.
location = bpy.context.object.location.copy()

انیمیشن

دو روش برای افزودن فریم‌های کلیدی از طریق پایتون وجود دارد.

اولین مورد از طریق خصوصیات کلیدی به طور مستقیم است ، مانند قرار دادن فریم کلیدی از دکمه به عنوان کاربر. همچنین می‌توانید منحنی‌ها و داده‌های فریم کلیدی را به صورت دستی ایجاد کنید ، سپس مسیر را به سمت مشخصه تنظیم کنید. در اینجا نمونه‌هایی از هر دو روش ذکر شده‌است. هر دو قاب اصلی را روی محور Z شی object فعال قرار می‌دهند.

مثال ساده:

obj = bpy.context.object
obj.location[2] = 0.0
obj.keyframe_insert(data_path="location", frame=10.0, index=2)
obj.location[2] = 1.0
obj.keyframe_insert(data_path="location", frame=20.0, index=2)

استفاده از توابع سطح پایین:

obj = bpy.context.object
obj.animation_data_create()
obj.animation_data.action = bpy.data.actions.new(name="MyAction")
fcu_z = obj.animation_data.action.fcurves.new(data_path="location", index=2)
fcu_z.keyframe_points.add(2)
fcu_z.keyframe_points[0].co = 10.0, 0.0
fcu_z.keyframe_points[1].co = 20.0, 1.0

سخن آخر…

مطالعه بیشتر
3 روش تکثیر اشیاء در نرم افزار بلندر + تصویر

امیدوارم این مقاله برای شما مفید بوده باشد و توانسته باشد شما را با کتابخانه bpy آشنا کرده باشد. از اینکه تا انتهای مقاله با ما همراه بودید از شما سپاسگزاریم. این مقاله از سایت بلندر برداشت شده‌است.

آیا این مقاله برای شما مفید بود؟
بله
تقریبا
خیر

مقالات مرتبط

پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *