Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/subdiv.c
| Show First 20 Lines • Show All 98 Lines • ▼ Show 20 Lines | Subdiv *BKE_subdiv_new_from_converter(const SubdivSettings *settings, | ||||
| struct OpenSubdiv_Converter *converter) | struct OpenSubdiv_Converter *converter) | ||||
| { | { | ||||
| SubdivStats stats; | SubdivStats stats; | ||||
| BKE_subdiv_stats_init(&stats); | BKE_subdiv_stats_init(&stats); | ||||
| BKE_subdiv_stats_begin(&stats, SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME); | BKE_subdiv_stats_begin(&stats, SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME); | ||||
| OpenSubdiv_TopologyRefinerSettings topology_refiner_settings; | OpenSubdiv_TopologyRefinerSettings topology_refiner_settings; | ||||
| topology_refiner_settings.level = settings->level; | topology_refiner_settings.level = settings->level; | ||||
| topology_refiner_settings.is_adaptive = settings->is_adaptive; | topology_refiner_settings.is_adaptive = settings->is_adaptive; | ||||
| topology_refiner_settings.num_extra_vertex_data = converter->getNumExtraVertexData(converter); | |||||
| struct OpenSubdiv_TopologyRefiner *osd_topology_refiner = NULL; | struct OpenSubdiv_TopologyRefiner *osd_topology_refiner = NULL; | ||||
| if (converter->getNumVertices(converter) != 0) { | if (converter->getNumVertices(converter) != 0) { | ||||
| osd_topology_refiner = openSubdiv_createTopologyRefinerFromConverter( | osd_topology_refiner = openSubdiv_createTopologyRefinerFromConverter( | ||||
| converter, &topology_refiner_settings); | converter, &topology_refiner_settings); | ||||
| } | } | ||||
| else { | else { | ||||
| /* TODO(sergey): Check whether original geometry had any vertices. | /* TODO(sergey): Check whether original geometry had any vertices. | ||||
| * The thing here is: OpenSubdiv can only deal with faces, but our | * The thing here is: OpenSubdiv can only deal with faces, but our | ||||
| ▲ Show 20 Lines • Show All 115 Lines • Show Last 20 Lines | |||||