#include <iostream>
#include <stdio.h>
namespace HDK_Sample {
{
public:
GEO_VoxelIOTranslator() {}
GEO_VoxelIOTranslator(
const GEO_VoxelIOTranslator &
src) {}
~GEO_VoxelIOTranslator() override {}
const char *formatName() const override;
int checkExtension(
const char *
name)
override;
int checkMagicNumber(unsigned magic) override;
bool ate_magic) override;
};
}
using namespace HDK_Sample;
GEO_VoxelIOTranslator::duplicate() const
{
return new GEO_VoxelIOTranslator(*this);
}
const char *
GEO_VoxelIOTranslator::formatName() const
{
return "Silly Sample Voxel Format";
}
int
GEO_VoxelIOTranslator::checkExtension(
const char *
name)
{
if (sname.fileExtension() && !strcmp(sname.fileExtension(), ".voxel"))
return true;
return false;
}
int
GEO_VoxelIOTranslator::checkMagicNumber(unsigned magic)
{
return 0;
}
{
#if defined(HOUDINI_11)
int def = -1;
#endif
{
int rx, ry, rz;
float tx, ty, tz, sx, sy, sz;
name_attrib.set(vol->getMapOffset(), name);
#if defined(HOUDINI_11)
vol->getVertex().getPos() =
UT_Vector3(tx, ty, tz);
#else
#endif
xform.
scale(sx/2, sy/2, sz/2);
vol->setTransform(xform);
handle->size(rx, ry, rz);
for (
int z = 0;
z < rz;
z++)
{
for (
int y = 0;
y < ry;
y++)
{
for (
int x = 0;
x < rx;
x++)
{
handle->setValue(
x,
y,
z, v);
}
}
}
}
}
GEO_VoxelIOTranslator::fileSave(
const GEO_Detail *gdp, std::ostream &os)
{
os << "VOXELS" << std::endl;
#if defined(HOUDINI_11)
FOR_ALL_PRIMITIVES(gdp, prim)
#else
#endif
{
#if defined(HOUDINI_11)
#else
#endif
{
#if defined(HOUDINI_11)
buf.
sprintf(
"volume_%d", prim->getNum());
#else
#endif
if (name_attrib.isValid())
name = name_attrib.get(prim->getMapOffset());
os << "VOLUME " << name << std::endl;
int resx, resy, resz;
vol->
getRes(resx, resy, resz);
os << resx << " " << resy << " " << resz << std::endl;
os << tmp.
x() <<
" " << tmp.
y() <<
" " << tmp.
z() << std::endl;
os << resx * length << " ";
os << resy * length << " ";
os << resz * length << std::endl;
os << "{" << std::endl;
for (
int z = 0;
z < resz;
z++)
{
for (
int y = 0;
y < resy;
y++)
{
os << " ";
for (
int x = 0;
x < resx;
x++)
{
os << (*handle)(
x,
y,
z) <<
" ";
}
os << std::endl;
}
}
os << "}" << std::endl;
os << std::endl;
}
}
}
void
{
}