本文整理汇总了C++中Primitive::finish_build方法的典型用法代码示例。如果您正苦于以下问题:C++ Primitive::finish_build方法的具体用法?C++ Primitive::finish_build怎么用?C++ Primitive::finish_build使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Primitive
的用法示例。
在下文中一共展示了Primitive::finish_build方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: t_map
Primitive*
PAPER_DOLL::build_primitive(CBface_list& o_faces)
{
LMESHptr skel_mesh = dynamic_pointer_cast<LMESH>(o_faces.mesh());
assert(skel_mesh);
LMESHptr mesh = get_inflate_mesh(skel_mesh);
assert(mesh);
// create vertices for top and bottom parts:
Bvert_list o_verts = o_faces.get_verts(); // original verts
Bvert_list t_verts = copy_verts(o_verts, mesh); // top verts
Bvert_list b_verts = copy_verts(o_verts, mesh); // bottom verts
// set up mappings:
// original --> top
// original --> bottom
VertMapper t_map(o_verts, t_verts, true);
VertMapper b_map(o_verts, b_verts, true);
Primitive* ret = new Primitive(mesh, skel_mesh);
// build dependencies
Bsurface_list surfs = Bsurface::get_surfaces(o_faces);
for (int i = 0; i < surfs.num(); i++)
ret->absorb_skel(surfs[i]);
// generate top faces and bottom faces
Bface_list t_faces = copy_faces(o_faces, t_map, ret, false);
Bface_list b_faces = copy_faces(o_faces, b_map, ret, true);
// create the sides:
create_sides(o_faces, t_map, b_map, ret);
Wvec n = o_faces.avg_normal();
if (1) {
define_offsets(o_verts, t_map, b_map, n, ret);
} else {
// under construction...
// for now just offset the top and bottom uniformly for testing...
const double k = Config::get_var_dbl("PAPER_DOLL_OFFSET_SCALE",1.0);
double h = o_faces.get_edges().strong_edges().avg_len();
t_verts.transform(Wtransf::translation( 0.5*k*h*n));
b_verts.transform(Wtransf::translation(-0.5*k*h*n));
}
// make it all undoable:
MULTI_CMDptr cmd = make_shared<MULTI_CMD>();
// finish build
ret->finish_build(cmd);
//cmd->add(hide_surfs_cmd(Bsurface::get_surfaces(o_faces)));
cmd->add(make_shared<SHOW_BBASE_CMD>(ret));
WORLD::add_command(cmd);
return _prim = ret;
}