Поэтому я попробовал посмотреть исходный код. Функция, в которой они смешиваются, выглядит так:
Код: Выделить всё
CustomData_bmesh_interp_nКод: Выделить всё
void CustomData_bmesh_interp_n(CustomData *data,
const void **src_blocks_ofs,
const float *weights,
const float *sub_weights,
int count,
void *dst_block_ofs,
int n)
{
BLI_assert(weights != nullptr);
BLI_assert(count > 0);
CustomDataLayer *layer = &data->layers[n];
const LayerTypeInfo *typeInfo = layerType_getInfo(layer->type);
typeInfo->interp(src_blocks_ofs, weights, sub_weights, count, dst_block_ofs);
}
У меня возникли проблемы:
- Нахождение конкретной функции interp, которая вызывается, поскольку это очень распространенное слово в проекте, что усложняет ее поиск.
- Понимание того, как он обрабатывает разрывы в атрибутах.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -collapses