Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/blender/blender_camera.cpp
| Context not available. | |||||
| if (!b_dof_object) | if (!b_dof_object) | ||||
| return b_camera.dof().focus_distance(); | return b_camera.dof().focus_distance(); | ||||
| Transform dofmat = get_transform(b_dof_object.matrix_world()); | |||||
| string focus_subtarget = b_camera.dof().focus_subtarget(); | |||||
| if (b_dof_object.pose() && !focus_subtarget.empty()) { | |||||
| BL::PoseBone b_bone = b_dof_object.pose().bones[focus_subtarget]; | |||||
| if (b_bone) { | |||||
| dofmat = dofmat * get_transform(b_bone.matrix()); | |||||
| } | |||||
| } | |||||
| /* for dof object, return distance along camera Z direction */ | /* for dof object, return distance along camera Z direction */ | ||||
| BL::Array<float, 16> b_ob_matrix; | BL::Array<float, 16> b_ob_matrix; | ||||
| b_engine.camera_model_matrix(b_ob, bcam->use_spherical_stereo, b_ob_matrix); | b_engine.camera_model_matrix(b_ob, bcam->use_spherical_stereo, b_ob_matrix); | ||||
| Transform obmat = transform_clear_scale(get_transform(b_ob_matrix)); | Transform obmat = transform_clear_scale(get_transform(b_ob_matrix)); | ||||
| Transform dofmat = get_transform(b_dof_object.matrix_world()); | |||||
| float3 view_dir = normalize(transform_get_column(&obmat, 2)); | float3 view_dir = normalize(transform_get_column(&obmat, 2)); | ||||
| float3 dof_dir = transform_get_column(&obmat, 3) - transform_get_column(&dofmat, 3); | float3 dof_dir = transform_get_column(&obmat, 3) - transform_get_column(&dofmat, 3); | ||||
| return fabsf(dot(view_dir, dof_dir)); | return fabsf(dot(view_dir, dof_dir)); | ||||
| Context not available. | |||||