forked from bartvdbraak/blender
"Fix" for [#25184] Forces for growing hair - update inconsistency - as discussed with Jahka on Saturday on IRC
* New option to "Regrow hair" for each frame. * This was perhaps more a feature request, but there was a similar useful feature called "animated hair" in particles at some point. * The previous behavior for hair growing was inconsistent to say the least, so this is a nice option to have.
This commit is contained in:
parent
c85adcc2e4
commit
7bf5d9449c
@ -125,7 +125,9 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, bpy.types.Panel):
|
|||||||
if psys.is_edited:
|
if psys.is_edited:
|
||||||
split.operator("particle.edited_clear", text="Free Edit")
|
split.operator("particle.edited_clear", text="Free Edit")
|
||||||
else:
|
else:
|
||||||
split.label(text="")
|
row = split.row()
|
||||||
|
row.enabled = particle_panel_enabled(context, psys)
|
||||||
|
row.prop(part, "regrow_hair")
|
||||||
row = split.row()
|
row = split.row()
|
||||||
row.enabled = particle_panel_enabled(context, psys)
|
row.enabled = particle_panel_enabled(context, psys)
|
||||||
row.prop(part, "hair_step")
|
row.prop(part, "hair_step")
|
||||||
|
@ -3473,7 +3473,7 @@ static void default_particle_settings(ParticleSettings *part)
|
|||||||
part->bb_uv_split=1;
|
part->bb_uv_split=1;
|
||||||
part->bb_align=PART_BB_VIEW;
|
part->bb_align=PART_BB_VIEW;
|
||||||
part->bb_split_offset=PART_BB_OFF_LINEAR;
|
part->bb_split_offset=PART_BB_OFF_LINEAR;
|
||||||
part->flag=PART_REACT_MULTIPLE|PART_HAIR_GEOMETRY|PART_EDISTR|PART_TRAND;
|
part->flag=PART_EDISTR|PART_TRAND;
|
||||||
|
|
||||||
part->sta= 1.0;
|
part->sta= 1.0;
|
||||||
part->end= 200.0;
|
part->end= 200.0;
|
||||||
|
@ -4006,7 +4006,7 @@ static void psys_prepare_physics(ParticleSimulationData *sim)
|
|||||||
static int hair_needs_recalc(ParticleSystem *psys)
|
static int hair_needs_recalc(ParticleSystem *psys)
|
||||||
{
|
{
|
||||||
if(!(psys->flag & PSYS_EDITED) && (!psys->edit || !psys->edit->edited) &&
|
if(!(psys->flag & PSYS_EDITED) && (!psys->edit || !psys->edit->edited) &&
|
||||||
((psys->flag & PSYS_HAIR_DONE)==0 || psys->recalc & PSYS_RECALC_RESET)) {
|
((psys->flag & PSYS_HAIR_DONE)==0 || psys->recalc & PSYS_RECALC_RESET || (psys->part->flag & PART_HAIR_REGROW && !psys->edit))) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11173,6 +11173,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
|||||||
for(part = main->particle.first; part; part = part->id.next) {
|
for(part = main->particle.first; part; part = part->id.next) {
|
||||||
if(part->boids)
|
if(part->boids)
|
||||||
part->boids->pitch = 1.0f;
|
part->boids->pitch = 1.0f;
|
||||||
|
|
||||||
|
part->flag &= ~PART_HAIR_REGROW; /* this was a deprecated flag before */
|
||||||
}
|
}
|
||||||
|
|
||||||
for (sc= main->screen.first; sc; sc= sc->id.next) {
|
for (sc= main->screen.first; sc; sc= sc->id.next) {
|
||||||
|
@ -273,7 +273,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
|
|||||||
/* for dopesheet */
|
/* for dopesheet */
|
||||||
#define PART_DS_EXPAND 8
|
#define PART_DS_EXPAND 8
|
||||||
|
|
||||||
#define PART_HAIR_GEOMETRY 16
|
#define PART_HAIR_REGROW 16 /* regrow hair for each frame */
|
||||||
|
|
||||||
#define PART_UNBORN 32 /*show unborn particles*/
|
#define PART_UNBORN 32 /*show unborn particles*/
|
||||||
#define PART_DIED 64 /*show died particles*/
|
#define PART_DIED 64 /*show died particles*/
|
||||||
|
@ -1183,6 +1183,11 @@ static void rna_def_particle_settings(BlenderRNA *brna)
|
|||||||
RNA_def_property_ui_text(prop, "Multi React", "React multiple times");
|
RNA_def_property_ui_text(prop, "Multi React", "React multiple times");
|
||||||
RNA_def_property_update(prop, 0, "rna_Particle_reset");
|
RNA_def_property_update(prop, 0, "rna_Particle_reset");
|
||||||
|
|
||||||
|
prop= RNA_def_property(srna, "regrow_hair", PROP_BOOLEAN, PROP_NONE);
|
||||||
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_HAIR_REGROW);
|
||||||
|
RNA_def_property_ui_text(prop, "Regrow", "Regrow hair for each frame");
|
||||||
|
RNA_def_property_update(prop, 0, "rna_Particle_redo");
|
||||||
|
|
||||||
prop= RNA_def_property(srna, "show_unborn", PROP_BOOLEAN, PROP_NONE);
|
prop= RNA_def_property(srna, "show_unborn", PROP_BOOLEAN, PROP_NONE);
|
||||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_UNBORN);
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_UNBORN);
|
||||||
RNA_def_property_ui_text(prop, "Unborn", "Show particles before they are emitted");
|
RNA_def_property_ui_text(prop, "Unborn", "Show particles before they are emitted");
|
||||||
|
Loading…
Reference in New Issue
Block a user