Simpan dan ganti jaring
Saya perlu membuat lambung cembung di atas objek saya, membuat gambar, lalu menghapus lambung itu lagi. Ide saya adalah menyimpan objek, data objek atau mesh itu sendiri kemudian membuat lambung dan membuat gambar dan kemudian hanya mengganti objek / data / mesh dengan data yang disimpan.
Misalnya pertama saya lakukan
self.backup[obj.name] = obj.data
dan kemudian setelah & rendering penuh saya ingin melakukan sesuatu seperti
orig_data= self.backup[obj.name]
obj.data = orig_data
obj.data.update()
Tapi ini tidak mengembalikan data sebelumnya, lambung tetap ada. Saya menebak sekarang saya hanya menyimpan tautan alih-alih data nyata tetapi saya tidak tahu cara memperbaikinya karena saya tidak benar-benar tahu banyak tentang tipe data blender yang berbeda, dll.
Setelah mencoba untuk mengganti objek mesh, data dan objek itu sendiri dan tidak ada yang berhasil saya semacam kehabisan ide. Saya akan senang dengan masukan apa pun =)
PS: Saya menggunakan 2.8. dalam hal itu membuat perbedaan.
Jawaban
Buat salinan
jawaban sederhananya adalah '
self.backup[obj.name] = obj.data.copy()
tanpa membuat salinan Anda memiliki referensi ke tautan yang sama. Jika Anda menggunakan bpy.ops.mesh.convex_hullsarankan daripada menggunakan bmesh, lihat
Apakah ada cara untuk membuat beberapa objek lambung cembung?
Convex Hull sebagai Mesh
Data sudah disimpan untuk kita dalam data file campuran,
me = context.object.data
yang tanpa penggantian nama meshes peralihan masih
bpy.data.objects[me.name]
Oleh karena itu, cukup simpan namanya, buat mesh baru dengan nama lain untuk convex hull dan tukar menggunakan mesh yang diambil melalui nama.
Jika setelah membuat mesh lambung cembung dan ingin membuatnya tersedia secara permanen. Pendekatan yang perlu dipertimbangkan adalah memberikan properti penunjuk pada objek mesh ke mesh lambung cembungnya.
bpy.props.Object.convex_hull_mesh = PointerProperty(type=bpy.types.Mesh)
buat mesh lambung cembung dan tetapkan ke properti ini untuk menyimpannya. Properti boolean lain dapat digunakan sebagai bendera untuk bertukar antara mesh lambung asli dan cembung.