62 bool is_object_visible)
67 data.is_parent_visible = is_object_visible;
78 BKE_pose_constraints_evaluate(
79 depsgraph, scene_cow, object_cow, pchan_index);
90 if (rootchan ==
nullptr) {
110 BKE_pose_iktree_evaluate(depsgraph, scene_cow, object_cow, rootchan_index);
144 BKE_pose_splineik_evaluate(
145 depsgraph, scene_cow, object_cow, rootchan_index);
171 if (object->
pose !=
nullptr) {
202 BKE_pose_eval_init(depsgraph, scene_cow, object_cow);
210 BKE_pose_eval_init_ik(depsgraph, scene_cow, object_cow);
217 BKE_pose_eval_cleanup(depsgraph, scene_cow, object_cow);
239 BKE_pose_eval_bone(depsgraph, scene_cow, object_cow, pchan_index);
250 BKE_pose_bone_done(depsgraph, object_cow, pchan_index);
260 BKE_pose_eval_bbone_segments(
261 depsgraph, object_cow, pchan_index);
268 if (pchan->prop !=
nullptr) {
274 if (pchan->constraints.first !=
nullptr) {
303 if (pchan->custom !=
nullptr) {
329 [object_cow](::
Depsgraph *
depsgraph) { BKE_pose_eval_proxy_init(depsgraph, object_cow); });
330 op_node->set_as_entry();
336 op_node->set_as_entry();
345 BKE_pose_eval_proxy_copy_bone(
346 depsgraph, object_cow, pchan_index);
348 op_node->set_as_exit();
351 if (pchan->prop !=
nullptr) {
358 if (pchan->custom !=
nullptr) {
368 BKE_pose_eval_proxy_cleanup(depsgraph, object_cow);
374 [object_cow](::
Depsgraph *
depsgraph) { BKE_pose_eval_proxy_done(depsgraph, object_cow); });
375 op_node->set_as_exit();
Blender kernel action and pose functionality.
void BKE_pose_channels_hash_make(struct bPose *pose)
void BKE_pose_update_constraint_flags(struct bPose *pose)
void BKE_pose_rebuild(struct Main *bmain, struct Object *ob, struct bArmature *arm, const bool do_id_user)
struct bPoseChannel * BKE_armature_ik_solver_find_root(struct bPoseChannel *pchan, struct bKinematicConstraint *data)
struct bPoseChannel * BKE_armature_splineik_solver_find_root(struct bPoseChannel *pchan, struct bSplineIKConstraint *data)
void BKE_constraints_id_loop(struct ListBase *list, ConstraintIDFunc func, void *userdata)
#define LISTBASE_FOREACH(type, var, list)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
@ POSE_CONSTRAINTS_NEED_UPDATE_FLAGS
@ CONSTRAINT_TYPE_SPLINEIK
@ CONSTRAINT_TYPE_KINEMATIC
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
virtual bool check_pchan_has_bbone(Object *object, const bPoseChannel *pchan)
virtual void build_object(int base_index, Object *object, eDepsNode_LinkedState_Type linked_state, bool is_visible)
OperationNode * add_operation_node(ComponentNode *comp_node, OperationCode opcode, const DepsEvalOperationCb &op=nullptr, const char *name="", int name_tag=-1)
static void constraint_walk(bConstraint *constraint, ID **idpoin, bool is_reference, void *user_data)
virtual void build_armature(bArmature *armature)
virtual void build_pose_constraints(Object *object, bPoseChannel *pchan, int pchan_index, bool is_object_visible)
virtual void build_proxy_rig(Object *object, bool is_object_visible)
virtual void build_rig(Object *object, bool is_object_visible)
virtual void build_ik_pose(Object *object, bPoseChannel *pchan, bConstraint *con)
virtual void build_splineik_pose(Object *object, bPoseChannel *pchan, bConstraint *con)
virtual void build_idproperties(IDProperty *id_property)
bool has_operation_node(ID *id, NodeType comp_type, const char *comp_name, OperationCode opcode, const char *name="", int name_tag=-1)
T * get_cow_datablock(const T *orig) const
const Depsgraph * depsgraph
@ DEG_ID_LINKED_INDIRECTLY