Пример #1
0
void
ViewerNode::updateViewer(const UpdateViewerArgs& args)
{

    OpenGLViewerI* uiContext = getUiContext();
    assert(uiContext);

    uiContext->clearPartialUpdateTextures();

    for (int i = 0; i < 2; ++i) {
        RectD rod;
        NodePtr viewerProcessNode = _imp->internalViewerProcessNode[i].lock();
        GetRegionOfDefinitionResultsPtr actionResults;
        ActionRetCodeEnum stat = viewerProcessNode->getEffectInstance()->getRegionOfDefinition_public(args.time, RenderScale(1.), args.view,  &actionResults);
        if (!isFailureRetCode(stat)) {
            rod = actionResults->getRoD();
        }

        for (std::list<UpdateViewerArgs::TextureUpload>::const_iterator it = args.viewerUploads[i].begin(); it!= args.viewerUploads[i].end(); ++it) {

            OpenGLViewerI::TextureTransferArgs transferArgs;
            transferArgs.image = it->image;
            transferArgs.colorPickerImage = it->colorPickerImage;
            transferArgs.colorPickerInputImage = it->colorPickerInputImage;
            transferArgs.textureIndex = i;
            transferArgs.time = args.time;
            transferArgs.view = args.view;
            transferArgs.rod = rod;
            transferArgs.recenterViewer = args.recenterViewer;
            transferArgs.viewportCenter = args.viewerCenter;
            transferArgs.viewerProcessNodeKey = it->viewerProcessImageKey;
            transferArgs.type = args.type;
            uiContext->transferBufferFromRAMtoGPU(transferArgs);
        }

    }
}
Пример #2
0
void
TrackMarker::resetCenter()
{
    KnobItemsTablePtr model = getModel();
    if (!model) {
        return;
    }
    RectD rod;
    NodePtr input = model->getNode()->getInput(0);
    if (!input) {
        Format f;
        getApp()->getProject()->getProjectDefaultFormat(&f);
        rod = f.toCanonicalFormat();
    } else {
        TimeValue time(input->getApp()->getTimeLine()->currentFrame());
        RenderScale scale(1.);
        RectD rod;
        {
            GetRegionOfDefinitionResultsPtr results;
            ActionRetCodeEnum stat = input->getEffectInstance()->getRegionOfDefinition_public(time, scale, ViewIdx(0), &results);
            if (!isFailureRetCode(stat)) {
                rod = results->getRoD();
            }
        }
        Point center;
        center.x = 0;
        center.y = 0;
        center.x = (rod.x1 + rod.x2) / 2.;
        center.y = (rod.y1 + rod.y2) / 2.;


        KnobDoublePtr centerKnob = getCenterKnob();
        centerKnob->setValue(center.x, ViewSetSpec::all(), DimIdx(0));
        centerKnob->setValue(center.y, ViewSetSpec::all(), DimIdx(1));
    }
}