Memorizza e sostituisci la mesh
Devo creare uno scafo convesso sui miei oggetti, renderizzare un'immagine e quindi eliminare di nuovo lo scafo. La mia idea era quella di memorizzare l'oggetto, i dati dell'oggetto o la mesh stessa, quindi creare lo scafo e renderizzare l'immagine e quindi sostituire semplicemente l'oggetto / dati / mesh con i dati memorizzati.
Per esempio prima lo farei
self.backup[obj.name] = obj.data
e poi dopo il rendering completo vorrei fare qualcosa di simile
orig_data= self.backup[obj.name]
obj.data = orig_data
obj.data.update()
Ma questo non sta ripristinando i dati precedenti, lo scafo rimane. Immagino che in questo momento memorizzo solo collegamenti invece di dati reali, ma non so come risolvere questo problema perché non so molto sui diversi tipi di dati di Blender, ecc.
Dopo aver provato a sostituire la mesh degli oggetti, i dati e l'oggetto stesso e nessuno di questi ha funzionato, ho finito le idee. Sarei felice di qualsiasi input =)
PS: sto usando 2.8. nel caso in cui ciò faccia la differenza.
Risposte
Fare una copia
la risposta semplice è `
self.backup[obj.name] = obj.data.copy()
senza fare una copia avevi un riferimento alla stessa mesh. Se stai usando bpy.ops.mesh.convex_hullsuggerisci invece di usare bmesh vedi
Esiste un modo per creare più oggetti scafi convessi?
Scafo convesso come rete
I dati sono già memorizzati per noi nei dati del file di fusione,
me = context.object.data
che senza dover rinominare le maglie in mezzo è ancora
bpy.data.objects[me.name]
Quindi potrebbe semplicemente mantenere il nome, creare una nuova mesh con un altro nome per lo scafo convesso e scambiare usando le mesh recuperate tramite nomi.
Se dopo aver creato una mesh di scafo convessa e desideri averla disponibile in modo permanente Un approccio da considerare sarebbe quello di dare a un oggetto mesh una proprietà di puntatore alla mesh del suo scafo convesso.
bpy.props.Object.convex_hull_mesh = PointerProperty(type=bpy.types.Mesh)
creare la maglia convessa dello scafo e assegnarla a questa proprietà per salvarla. Un'altra proprietà booleana potrebbe essere utilizzata come flag per scambiare tra la mesh dello scafo originale e quella convessa.