コード例 #1
0
ファイル: Polyline.cpp プロジェクト: dnjsflagh1/code
    //-----------------------------------------------------------------------
    void Polyline::addKeyPoint( Real dis )
    {
        size_t lastIndex = getKeyPointCount() - 1;
        PolylinePoint addPoint;
        PolylinePoint& priorPoint =  getRefKeyPoint(lastIndex-1);
        PolylinePoint& currPoint  =  getRefKeyPoint(lastIndex);
        Vector3 addVec = currPoint.position - priorPoint.position;
        addVec.normalise();
        addVec = addVec * dis;
        addPoint.position = currPoint.position + addVec;

        addKeyPoint( addPoint );
    }
 void TFGeometry1D::addKeyPoint( float position, float alpha) {
     TFGeometry1D::KeyPoint kp(position, cgt::col4(255));
     cgt::col4 color(255);
     std::vector<TFGeometry1D::KeyPoint>::iterator lb = std::upper_bound(_keyPoints.begin(), _keyPoints.end(), kp);
     if (lb != _keyPoints.end()) {
         color = lb->_color;
     }
     else {
         color = _keyPoints.back()._color;
     }
     color.a = static_cast<uint8_t>(alpha * 255.f);
     addKeyPoint(position, color);
 }
コード例 #3
0
ファイル: Polyline.cpp プロジェクト: dnjsflagh1/code
 //-----------------------------------------------------------------------
 void Polyline::insertKeyPoint( size_t index, Real lastDis )
 {
     checkKeyPointIndexValid(index);
     if ( index != ( getKeyPointCount() - 1 ) )
     {
         PolylinePoint insertPoint;
         PolylinePoint& currPoint =  getRefKeyPoint(index);
         PolylinePoint& nextPoint =  getRefKeyPoint(index+1);
         insertPoint.position = currPoint.position.midPoint(nextPoint.position);
         insertKeyPoint( insertPoint, index );
     }else
     {
         addKeyPoint( lastDis );
     }
 }
コード例 #4
0
ファイル: Polyline.cpp プロジェクト: dnjsflagh1/code
 //-----------------------------------------------------------------------
 void Polyline::addKeyPoint( Vec3 pos )
 {
     PolylinePoint point;
     point.position = MGEngineUtility::toVec3(pos);
     addKeyPoint( point );
 }
    void ViscontestDemo::init() {
        AutoEvaluationPipeline::init();
        _horizontalSplitter.init();
        _horizontalSplitter.s_onEvent.connect(this, &ViscontestDemo::onSplitterEvent);
        
        _tcp.p_image.setValue("ct.image");
        _renderTargetID.setValue("ViscontestDemo");

        _fiberReader.p_url.setValue(ShdrMgr.completePath("modules/neuro/sampledata/case1/tumor.trk"));
        _fiberReader.p_scaling.setValue(cgt::vec3(100.f));
        _fiberReader.p_outputId.setValue("fibers");
        _fiberReader.p_outputId.addSharedProperty(&_fiberRenderer.p_strainId);

        _fiberRenderer.p_renderTargetID.setValue("fibres.rendered");
        _fiberRenderer.p_renderTargetID.addSharedProperty(&_mvr.p_geometryImageId);
        _fiberRenderer.p_renderTargetID.addSharedProperty(&_rtc1.p_firstImageId);

        _t1PostReader.p_url.setValue(ShdrMgr.completePath("modules/neuro/sampledata/case1/case1_T1_pre.mhd"));
        _t1PostReader.p_targetImageID.setValue("t1_pre.image");
        _t1PostReader.p_targetImageID.addSharedProperty(&_mvmpr2D.p_sourceImage1);
        _t1PostReader.p_targetImageID.addSharedProperty(&_mvmpr3D.p_sourceImage1);
        _t1PostReader.p_targetImageID.addSharedProperty(&_mvr.p_sourceImage1);
        _t1PostReader.s_validated.connect(this, &ViscontestDemo::onReaderValidated);

        _t1PreReader.p_url.setValue(ShdrMgr.completePath("modules/neuro/sampledata/case1/case1_T1_post.mhd"));
        _t1PreReader.p_targetImageID.setValue("t1_post.image");
        _t1PreReader.p_targetImageID.addSharedProperty(&_mvmpr2D.p_sourceImage2);
        _t1PreReader.p_targetImageID.addSharedProperty(&_mvmpr3D.p_sourceImage2);
        _t1PreReader.p_targetImageID.addSharedProperty(&_mvr.p_sourceImage2);
        _t1PreReader.s_validated.connect(this, &ViscontestDemo::onReaderValidated);

        _flairReader.p_url.setValue(ShdrMgr.completePath("modules/neuro/sampledata/case1/case1_FLAIR.mhd"));
        _flairReader.p_targetImageID.setValue("flair.image");
        _flairReader.p_targetImageID.addSharedProperty(&_mvmpr2D.p_sourceImage3);
        _flairReader.p_targetImageID.addSharedProperty(&_mvmpr3D.p_sourceImage3);
        _flairReader.p_targetImageID.addSharedProperty(&_mvr.p_sourceImage3);
        _flairReader.s_validated.connect(this, &ViscontestDemo::onReaderValidated);

        Geometry1DTransferFunction* t1_tf_rc = new Geometry1DTransferFunction(128, cgt::vec2(0.f, .023f));
        t1_tf_rc->addGeometry(TFGeometry1D::createQuad(cgt::vec2(.06f, .11f), cgt::col4(57, 57, 57, 32), cgt::col4(196, 196, 196, 16)));
        _mvr.p_transferFunction1.replaceTF(t1_tf_rc);

        Geometry1DTransferFunction* t1_tf_mpr = new Geometry1DTransferFunction(128, cgt::vec2(0.f, .023f));
        t1_tf_mpr->addGeometry(TFGeometry1D::createQuad(cgt::vec2(.06f, .4f), cgt::col4(57, 57, 57, 32), cgt::col4(196, 196, 196, 16)));
        _mvmpr2D.p_transferFunction1.replaceTF(t1_tf_mpr);
        _mvmpr3D.p_transferFunction1.replaceTF(t1_tf_mpr->clone());

        Geometry1DTransferFunction* ct_tf = new Geometry1DTransferFunction(128, cgt::vec2(0.f, .0421f));
        ct_tf->addGeometry(TFGeometry1D::createQuad(cgt::vec2(.381f, .779f), cgt::col4(0, 100, 150, 128), cgt::col4(0, 192, 255, 172)));
        _mvmpr2D.p_transferFunction2.replaceTF(ct_tf);
        _mvmpr3D.p_transferFunction2.replaceTF(ct_tf->clone());
        _mvr.p_transferFunction2.replaceTF(ct_tf->clone());

        Geometry1DTransferFunction* flair_tf = new Geometry1DTransferFunction(128, cgt::vec2(0.f, .0193027f));
        auto g = TFGeometry1D::createQuad(cgt::vec2(0.34f, 0.42f), cgt::col4(255, 255, 0, 80), cgt::col4(255, 32, 192, 128));
        g->addKeyPoint(.9f, cgt::col4(255, 32, 192, 150));
        flair_tf->addGeometry(g);
        _mvmpr2D.p_transferFunction3.replaceTF(flair_tf);
        _mvmpr3D.p_transferFunction3.replaceTF(flair_tf->clone());
        _mvr.p_transferFunction3.replaceTF(flair_tf->clone());

        _mvmpr2D.p_relativeToImageCenter.setValue(false);
        _mvmpr2D.p_use2DProjection.setValue(true);
        _mvmpr2D.p_planeSize.setValue(200.f);
        _mvmpr2D.p_showWireframe.setValue(false);
        _mvmpr2D.p_transparency.setValue(0.f);
        _mvmpr2D.p_outputImageId.setValue("result.mpr.2d");

        _mvmpr2D.p_planeSize.addSharedProperty(&_mvmpr3D.p_planeSize);
        _mvmpr2D.p_planeDistance.addSharedProperty(&_mvmpr3D.p_planeDistance);
        _mvmpr2D.p_planeNormal.addSharedProperty(&_mvmpr3D.p_planeNormal);

        _mvmpr3D.p_relativeToImageCenter.setValue(false);
        _mvmpr3D.p_use2DProjection.setValue(false);
        _mvmpr3D.p_outputImageId.setValue("result.mpr.3d");
        _mvmpr3D.p_showWireframe.setValue(true);
        _mvmpr3D.p_transparency.setValue(0.5f);
        _mvmpr3D.p_outputImageId.addSharedProperty(&_rtc2.p_firstImageId);
        
        _mvr.p_outputImageId.setValue("result.rc");
        _mvr.p_outputImageId.addSharedProperty(&_rtc1.p_secondImageId);
        _mvr.p_samplingRate.setValue(1.f);

        _rtc1.p_compositingMethod.selectByOption(RenderTargetCompositor::CompositingModeDepth);
        _rtc1.p_targetImageId.setValue("composed1");
        _rtc1.p_targetImageId.addSharedProperty(&_rtc2.p_secondImageId);

        _rtc2.p_compositingMethod.selectByOption(RenderTargetCompositor::CompositingModeDepth);
        _rtc2.p_targetImageId.setValue("composed");
    }
コード例 #6
0
ファイル: Mapper.cpp プロジェクト: nikszejna/pa7samplecs253
    //reads KeyPoints into keypoints vector from fileName given
    //format is: x1 y1 x2 y2 for each line in the file
    //where (x1,y1) are the input coordinates for a keypoint
    //and (x2,y2) are the output coordinates for a keypoint
int Mapper::ReadKeyPointsFromFile(const char* fileName)
{
    //open key points file
    ifstream keysIn(fileName);
    //if file did not open correctly return failure
    if(!keysIn) return -1;
    
    string lineInFile = "";
    
    //each iteration of this loop reads a line from file with name
    //fileName and should contain four integers
    while(getline(keysIn,lineInFile))
    {
        //create a new stringstream with each line 
        stringstream lineStream(lineInFile);
        
        int inX,inY;
        std::vector<Coordinate> CoordinateVector;
        CoordinateVector.reserve(10);
        while(!(lineStream.fail() || lineStream.eof()))
        {
            //read int a coordinate at a time
            lineStream >> inX;
            lineStream >> inY;  
            //make a coordinate from the ints
            Coordinate tempCo(inX,inY);
            CoordinateVector.push_back(tempCo);

        }

        
        
        if(lineStream.fail())
        {
            lineStream.clear();
            char tester;
            lineStream >> tester;
            if(!lineStream.fail()) return -1; //found a char in the KP file
            
        }
        
        //int to try a bad read on
        int ErrorTester;
        //if this read works the file format is bad
        //or reading is not working correctly
        lineStream >> ErrorTester;
    if(lineStream.fail() && lineStream.eof()); //no problems
    else return -1;
        
        
        //Check that the keyPoint has at least 3 coordinates
        //otherwise not valid
        if(CoordinateVector.size() < 3) return -1;
        //check if each size is the same as the first
        

        //create a keypoint with CoordinateVector
        KeyPoint temp(CoordinateVector);
        //store the keypoint in the mapper
        addKeyPoint(temp);
        
        
    }