2013-05-18 33 views
5

Bắt đầu với một khối lập phương đơn lẻ, tôi đã thay đổi một số thuộc tính (vật liệu, màu sắc, thuộc tính phản chiếu), và sau đó nhân đôi đối tượng thành một tá hình khối, đặt chúng vào cảnh. Sau khi render, tôi muốn thay đổi màu sắc của tất cả chúng. Làm cách nào để tôi thực hiện điều này một cách hiệu quả?Làm cách nào để thay đổi cùng một thông số trên nhiều đối tượng một cách hiệu quả trong Máy xay sinh tố?

Tôi đã tìm thấy nhiều cách đã:

  1. Trong chế độ đối tượng, chọn tất cả các đối tượng (B, sau đó hình chữ nhật chọn), tham gia các mắt lưới ctrl-j, thay đổi màu sắc, tab vào chế độ chỉnh sửa, P để tách đối tượng một lần nữa. Điều này là hoàn toàn có thể vì các mắt lưới của tất cả các đối tượng của tôi không chạm vào. Basics docs
  2. Có người đã viết một kịch bản Python để làm công cụ tương tự, here

Số 1 là dễ bị lỗi và quá tẻ nhạt để sử dụng thường xuyên. Số 2 là chuyên biệt hơn và tồi tệ hơn nhiều. Chỉ cần chọn nhiều đối tượng và thay đổi giá trị không hoạt động vì các lựa chọn thuộc tính chỉ áp dụng cho đối tượng đang hoạt động mà chỉ là một trong những đối tượng được chọn.

Vì đây là trường hợp sử dụng phổ biến, có thể tôi đang bỏ lỡ một cách dễ dàng. Nó là gì?

+1

Đối với những người bạn, những người băn khoăn đặt ra câu hỏi này như tôi, đây là phiên bản cập nhật: https: // máy xay sinh tố. stackexchange.com/questions/6015/applying-numeric-input-attribute-changes-on-multiple-objects-at-the-same-time –

Trả lời

9

Trong khi tôi không tìm thấy giải pháp nút hoặc giải pháp đơn giản được ưa thích nhiều, hóa ra việc hack mã Python của riêng bạn trong Blender dễ hơn là người ta có thể nghĩ.

Các hình khối tôi đang làm việc giống như đá domino hơn. Sau đó, tất cả các vật thể trông giống như domino đều có tên bắt đầu bằng "Domino". Nó là rất dễ dàng để thay đổi tất cả các đối tượng trong một cảnh dựa trên tên của họ:

for o in bpy.data.objects: 
    if not "Domino" in o.name: 
     continue 
    o.rigid_body.mass = 500 
    o.rigid_body.friction = 0.4 
    o.rigid_body.restitution = 0.95 
    o.rigid_body.angular_damping = 0.2 
    o.rigid_body.linear_damping = 0.05 

Để sử dụng mã này, tôi chỉ đơn giản là mở ra một cửa sổ mới (kéo nhỏ phía trên biểu tượng tam giác vuông trên bất kỳ cửa sổ Máy xay sinh tố hiện có), đã thay đổi loại cửa sổ để "Bảng điều khiển Python" (biểu tượng chọn loại cửa sổ bên trái thấp hơn), sau đó dán mã trên vào đó.

Mã có thể được chỉnh sửa trong trình chỉnh sửa văn bản bên ngoài. Ngoài ra, người ta cũng có thể mở một cửa sổ soạn thảo văn bản bên trong Blender. Sau khi lưu một cảnh, cả bảng điều khiển Python và trình soạn thảo văn bản nội bộ đều được lưu trữ dọc theo mô hình 3D tạo ra một quy trình làm việc rất tốt.

Tìm tên đối tượng chính xác - chẳng hạn như bpy.data.objects["Domino.033"].rigid_body.mass rất dễ dàng, vì Máy xay sinh tố hiển thị những điều này khi di chuột qua bất kỳ trường nhập biểu mẫu nào bằng con trỏ chuột. Nếu một người đã xác định một đối tượng, hãy sử dụng hàm dir() của Python để lấy danh sách tất cả các phương thức và thuộc tính đã biết của một đối tượng. Có thể có nhiều hơn gui cho phép sửa đổi hoặc sử dụng.

Điều này dễ hơn nhiều so với tôi nghĩ. Nó có lẽ giải thích tại sao người ta có thể nghĩ về một số thao tác phức tạp mà không có yếu tố gui - nó đơn giản dễ dàng hơn để xử lý trong mã. Tôi có thể sẽ sử dụng điều này để nhân bản và định vị các đối tượng dọc theo các đường thẳng, hình tròn, hình xoắn ốc thay vì sử dụng các thuộc tính mảng của Blender. Nó sẽ cho phép điều chỉnh vị trí sau này dễ dàng hơn.

1

Tôi tò mò tại sao bạn không thể điều chỉnh Tài liệu. Máy xay sinh tố làm cho việc sử dụng lại các yếu tố của vật thể thật dễ dàng. Bạn có thể có 100 đối tượng chia sẻ một lưới. Bạn có thể có 100 mắt lưới chia sẻ một bộ 4 tài liệu.

Tôi tưởng tượng một tập hợp các kẻ thống trị sẽ có 21 mắt lưới (đối với tất cả các kết hợp 1-6 x 1-6).Những mắt lưới sẽ có 2 hoặc 3 vật liệu (một cho các pip, và một hoặc nhiều hơn cho cơ thể). Nếu được liên kết đúng cách, bạn có thể thay đổi màu trên tất cả các pip bằng cách thay đổi một vật liệu được tất cả các mắt lưới sử dụng.

Sử dụng python để đối tượng sửa đổi hàng loạt rất mạnh và có thể áp dụng cho nhiều vấn đề lớn, nhưng đôi khi giải pháp dễ dàng hơn.

+0

Cảm ơn đã thông báo cho tôi về khả năng chia sẻ các định nghĩa tài liệu trên các đối tượng. Tôi sẽ phải kiểm tra một thời gian. Các ứng dụng thực tế ở đây đơn giản hơn nhiều so với những gì bạn hình dung bởi vì đây là cơ bản chỉ là hộp cho domino lật đổ, không phải là màu đen và trắng loại dominos với pips trên chúng. Một vấn đề với mô phỏng là ma sát hoạt động khác nhau đối với đối tượng tĩnh và đối tượng di chuyển, và những gì tôi đã mô phỏng hơi xa so với thực tế (có thể là lỗi của người dùng). Cuối cùng, tôi đã từ bỏ dự án cụ thể này ngay bây giờ. – cfi

+0

Làm thế nào để bạn chỉ định một tài liệu cho nhiều đối tượng lúc đầu? Nếu các đối tượng khác nhau được chọn, chỉ có đối tượng đang hoạt động mới có thể có tài liệu được gán rõ ràng. – mins

+0

Chọn nhiều đối tượng, đảm bảo đối tượng có vật liệu bạn thích là đối tượng đang hoạt động. Sử dụng Ctrl-L để hiển thị menu Thực hiện LInk và chọn toán tử Vật liệu. –

9

Nếu bạn chỉ muốn thay đổi một tham số cho nhiều đối tượng, hãy nhấp vào kiểm soát (trường văn bản chẳng hạn) và chọn Sao chép sang được chọn.

Kích hoạt Chế độ xem 3D: Sao chép Atributes menu trong Giao diện Diễn Đàn và gọi nó với ctrl + c nếu bạn muốn sao chép từ bổ nghĩa hay như vậy

http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/Copy_Attributes_Menu

2

Dưới đây là một Blender 3D Mẹo : Để làm việc trên một loạt các đối tượng cùng một lúc, hãy bật plugin "Sao chép thuộc tính" đi kèm với Máy xay sinh tố nhưng không được bật theo mặc định: mở "Tùy chọn người dùng", nhấp "Addons", sau đó tìm kiếm "thuộc tính sao chép" tìm plugin "Trình xem 3D: Bản sao thuộc tính bản sao". Bật plugin rồi đóng tùy chọn.

Để sử dụng :, trong chế độ xem 3D, hãy chọn một hoặc nhiều đối tượng TARGET, sau đó chọn cuối cùng đối tượng SOURCE. Nhấn "Ctrl-C" trên bàn phím và xem menu của mọi loại thuộc tính mà bạn có thể sao chép. Nhấp vào một (ví dụ: tỷ lệ) và bạn sẽ thấy tỷ lệ của đối tượng nguồn sẽ được áp dụng cho các đối tượng đã chọn trước đó.

Dưới đây là bài hướng dẫn http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/Copy_Attributes_Menu

này để đáp lại:

http://obasandbox.wordpress.com/2011/10/23/cg-blender-setting-properties-on-multiple-objects/

Các vấn đề liên quan