本文整理汇总了C++中bl::SpaceView3D::render_border_max_x方法的典型用法代码示例。如果您正苦于以下问题:C++ SpaceView3D::render_border_max_x方法的具体用法?C++ SpaceView3D::render_border_max_x怎么用?C++ SpaceView3D::render_border_max_x使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bl::SpaceView3D
的用法示例。
在下文中一共展示了SpaceView3D::render_border_max_x方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: blender_camera_border
static void blender_camera_border(BlenderCamera *bcam, BL::RenderEngine b_engine, BL::RenderSettings b_render, BL::Scene b_scene, BL::SpaceView3D b_v3d,
BL::RegionView3D b_rv3d, int width, int height)
{
bool is_camera_view;
/* camera view? */
is_camera_view = b_rv3d.view_perspective() == BL::RegionView3D::view_perspective_CAMERA;
if(!is_camera_view) {
/* for non-camera view check whether render border is enabled for viewport
* and if so use border from 3d viewport
* assume viewport has got correctly clamped border already
*/
if(b_v3d.use_render_border()) {
bcam->border.left = b_v3d.render_border_min_x();
bcam->border.right = b_v3d.render_border_max_x();
bcam->border.bottom = b_v3d.render_border_min_y();
bcam->border.top = b_v3d.render_border_max_y();
}
return;
}
BL::Object b_ob = (b_v3d.lock_camera_and_layers())? b_scene.camera(): b_v3d.camera();
if(!b_ob)
return;
/* Determine camera border inside the viewport. */
BoundBox2D full_border;
blender_camera_border_subset(b_engine,
b_render,
b_scene,
b_v3d,
b_rv3d,
b_ob,
width, height,
full_border,
&bcam->viewport_camera_border);
if(!b_render.use_border()) {
return;
}
bcam->border.left = b_render.border_min_x();
bcam->border.right = b_render.border_max_x();
bcam->border.bottom = b_render.border_min_y();
bcam->border.top = b_render.border_max_y();
/* Determine viewport subset matching camera border. */
blender_camera_border_subset(b_engine,
b_render,
b_scene,
b_v3d,
b_rv3d,
b_ob,
width, height,
bcam->border,
&bcam->border);
bcam->border.clamp();
}
示例2: blender_camera_border
static void blender_camera_border(BlenderCamera *bcam, BL::Scene b_scene, BL::SpaceView3D b_v3d,
BL::RegionView3D b_rv3d, int width, int height)
{
BL::RenderSettings r = b_scene.render();
bool is_camera_view;
/* camera view? */
is_camera_view = b_rv3d.view_perspective() == BL::RegionView3D::view_perspective_CAMERA;
if(!is_camera_view) {
/* for non-camera view check whether render border is enabled for viewport
* and if so use border from 3d viewport
* assume viewport has got correctly clamped border already
*/
if(b_v3d.use_render_border()) {
bcam->border.left = b_v3d.render_border_min_x();
bcam->border.right = b_v3d.render_border_max_x();
bcam->border.bottom = b_v3d.render_border_min_y();
bcam->border.top = b_v3d.render_border_max_y();
return;
}
}
else if(!r.use_border())
return;
BL::Object b_ob = (b_v3d.lock_camera_and_layers())? b_scene.camera(): b_v3d.camera();
if(!b_ob)
return;
bcam->border.left = r.border_min_x();
bcam->border.right = r.border_max_x();
bcam->border.bottom = r.border_min_y();
bcam->border.top = r.border_max_y();
/* determine camera viewport subset */
BoundBox2D view_box, cam_box;
blender_camera_view_subset(b_scene, b_ob, b_v3d, b_rv3d, width, height,
&view_box, &cam_box);
/* determine viewport subset matching camera border */
cam_box = cam_box.make_relative_to(view_box);
bcam->border = cam_box.subset(bcam->border).clamp();
}
示例3: get_camera_border
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Sync rendered View from blender scene to Octane camera data
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void BlenderSync::get_camera_border(Camera *cam, BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height) {
BL::RenderSettings r = b_scene.render();
/* camera view? */
if(b_rv3d.view_perspective() != BL::RegionView3D::view_perspective_CAMERA) {
/* for non-camera view check whether render border is enabled for viewport
* and if so use border from 3d viewport assume viewport has got correctly clamped border already */
cam->use_border = b_v3d.use_render_border();
if(cam->use_border) {
cam->border.x = (uint32_t)(b_v3d.render_border_min_x() * (float)width);
cam->border.y = (uint32_t)((1.0f - b_v3d.render_border_max_y()) * (float)height);
cam->border.z = (uint32_t)(b_v3d.render_border_max_x() * (float)width);
cam->border.w = (uint32_t)((1.0f - b_v3d.render_border_min_y()) * (float)height);
return;
}
}
else {
cam->use_border = r.use_border();
if(!cam->use_border) return;
BL::Object b_ob = (b_v3d.lock_camera_and_layers()) ? b_scene.camera() : b_v3d.camera();
if(!b_ob) return;
float aspectratio, xaspect, yaspect;
bool horizontal_fit;
// Get View plane
float xratio = (float)width * cam->pixelaspect.x;
float yratio = (float)height * cam->pixelaspect.y;
if(cam->sensor_fit == Camera::AUTO) horizontal_fit = (xratio > yratio);
else if(cam->sensor_fit == Camera::HORIZONTAL) horizontal_fit = true;
else horizontal_fit = false;
if(horizontal_fit) {
aspectratio = xratio / yratio;
xaspect = aspectratio;
yaspect = 1.0f;
}
else {
aspectratio = yratio / xratio;
xaspect = 1.0f;
yaspect = aspectratio;
}
BoundBox2D view_box(-xaspect, xaspect, -yaspect, yaspect);
view_box = view_box * cam->zoom;
//float view_dx = 2.0f * (aspectratio * cam->lens_shift_x + cam->offset_x * xaspect * 2.0f);
//float view_dy = 2.0f * (aspectratio * cam->lens_shift_y + cam->offset_y * yaspect * 2.0f);
//view_box.left += view_dx;
//view_box.right += view_dx;
//view_box.bottom += view_dy;
//view_box.top += view_dy;
view_box = view_box / aspectratio;
// Get camera plane
BL::ID b_ob_data = b_ob.data();
BL::Camera b_camera(b_ob_data);
xratio = (float)r.resolution_x() * r.resolution_percentage() / 100;
yratio = (float)r.resolution_y() * r.resolution_percentage() / 100;
if(b_camera.sensor_fit() == BL::Camera::sensor_fit_AUTO) horizontal_fit = (xratio > yratio);
else if(b_camera.sensor_fit() == BL::Camera::sensor_fit_HORIZONTAL) horizontal_fit = true;
else horizontal_fit = false;
if(horizontal_fit) {
aspectratio = xratio / yratio;
xaspect = aspectratio;
yaspect = 1.0f;
}
else {
aspectratio = yratio / xratio;
xaspect = 1.0f;
yaspect = aspectratio;
}
BoundBox2D cam_box(-xaspect, xaspect, -yaspect, yaspect);
//float cam_dx = 2.0f * aspectratio * b_camera.shift_x();
//float cam_dy = 2.0f * aspectratio * b_camera.shift_y();
//cam_box.left += cam_dx;
//cam_box.right += cam_dx;
//cam_box.bottom += cam_dy;
//cam_box.top += cam_dy;
cam_box = cam_box / aspectratio;
// Get render region
cam_box = cam_box.make_relative_to(view_box);
BoundBox2D orig_border(r.border_min_x(), r.border_max_x(), r.border_min_y(), r.border_max_y());
BoundBox2D border = cam_box.subset(orig_border).clamp();
cam->border.x = (uint32_t)(border.left * (float)width);
cam->border.y = (uint32_t)((1.0f - border.top) * (float)height);
//.........这里部分代码省略.........