HxUniformVectorField3* HxMovingLeastSquaresWarp::createOutputVectorDataSet() { HxUniformScalarField3* fromImage = dynamic_cast<HxUniformScalarField3*>(portFromImage.getSource()); HxUniformVectorField3* output = dynamic_cast<HxUniformVectorField3*>(getResult(1)); if (!fromImage) return (0); McDim3l dims; McBox3f bbox; if (fromImage) { dims = fromImage->lattice().getDims(); bbox = fromImage->getBoundingBox(); } if (!output || output->lattice().getDims() != dims) output = 0; if (!output) { output = new HxUniformVectorField3(dims, McPrimType::MC_FLOAT); } output->lattice().setBoundingBox(bbox); output->composeLabel(fromImage->getLabel(), "Displacement"); setResult(1, output); return (output); }
HxUniformScalarField3* HxMovingLeastSquaresWarp::createOutputDataSet() { HxUniformScalarField3* fromImage = dynamic_cast<HxUniformScalarField3*>(portFromImage.getSource()); HxUniformScalarField3* toImage = dynamic_cast<HxUniformScalarField3*>(portToImage.getSource()); HxUniformScalarField3* warpedImage = dynamic_cast<HxUniformScalarField3*>(getResult(0)); if (!fromImage) return (0); McDim3l dims; McBox3f bbox; if (toImage) { dims = toImage->lattice().getDims(); bbox = toImage->getBoundingBox(); } if (!warpedImage || warpedImage->lattice().getDims()[0] != dims[0] || warpedImage->lattice().getDims()[1] != dims[1] || warpedImage->lattice().getDims()[2] != dims[2]) warpedImage = 0; if (!warpedImage) { if (toImage->isOfType(HxUniformLabelField3::getClassTypeId())) { warpedImage = new HxUniformLabelField3(dims); ((HxUniformLabelField3*)warpedImage)->parameters = ((HxUniformLabelField3*)fromImage)->parameters; } else warpedImage = new HxUniformScalarField3(dims, fromImage->primType()); } warpedImage->setBoundingBox(bbox); warpedImage->composeLabel(fromImage->getLabel(), "Warped"); setResult(0, warpedImage); return (warpedImage); }