From 3885a4c6f9f5d2962ad6327efc724ed3193ced29 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Tue, 23 Oct 2012 12:00:52 -0400 Subject: [PATCH 01/18] new branch for motion blur and spacetime kd-trees --- include/mitsuba/render/gkdtree.h | 4 +- include/mitsuba/render/sahkdtree3.h | 3 +- include/mitsuba/render/sahkdtree4.h | 304 +++++++++++++++++++ src/shapes/SConscript | 1 + src/shapes/pointcache.cpp | 435 ++++++++++++++++++++++++++++ 5 files changed, 745 insertions(+), 2 deletions(-) create mode 100644 include/mitsuba/render/sahkdtree4.h create mode 100644 src/shapes/pointcache.cpp diff --git a/include/mitsuba/render/gkdtree.h b/include/mitsuba/render/gkdtree.h index c0509d97..4f19ec4e 100644 --- a/include/mitsuba/render/gkdtree.h +++ b/include/mitsuba/render/gkdtree.h @@ -1321,7 +1321,9 @@ protected: return a.axis < b.axis; if (a.pos != b.pos) return a.pos < b.pos; - return a.type < b.type; + if (a.type != b.type) + return a.type < b.type; + return a.index < b.index; } }; diff --git a/include/mitsuba/render/sahkdtree3.h b/include/mitsuba/render/sahkdtree3.h index 9db4338d..8053d121 100644 --- a/include/mitsuba/render/sahkdtree3.h +++ b/include/mitsuba/render/sahkdtree3.h @@ -63,7 +63,8 @@ public: * Given a split on axis \a axis that produces children having extents * \a leftWidth and \a rightWidth along \a axis, compute the probability * of traversing the left and right child during a typical query - * operation. + * operation. In the case of the surface area heuristic, this is simply + * the ratio of surface areas. */ inline std::pair operator()(int axis, Float leftWidth, Float rightWidth) const { return std::pair( diff --git a/include/mitsuba/render/sahkdtree4.h b/include/mitsuba/render/sahkdtree4.h new file mode 100644 index 00000000..6900bd80 --- /dev/null +++ b/include/mitsuba/render/sahkdtree4.h @@ -0,0 +1,304 @@ +/* + This file is part of Mitsuba, a physically based rendering system. + + Copyright (c) 2007-2012 by Wenzel Jakob and others. + + Mitsuba is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License Version 3 + as published by the Free Software Foundation. + + Mitsuba is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#if !defined(__SAH_KDTREE4_H) +#define __SAH_KDTREE4_H + +#include + +MTS_NAMESPACE_BEGIN + +typedef TAABB AABB4; + +/** + * \brief Implements the four-dimensional surface area heuristic for use + * by the \ref GenericKDTree construction algorithm. + */ +class SurfaceAreaHeuristic4 { +public: + /** + * \brief Initialize the surface area heuristic with the bounds of + * a parent node + * + * Precomputes some information so that traversal probabilities + * of potential split planes can be evaluated efficiently + */ + inline SurfaceAreaHeuristic4(const AABB4 &aabb) : m_aabb(aabb) { + const Vector4 extents(aabb.getExtents()); + const Float temp = 1.0f / (extents.x * extents.y + + extents.y*extents.z + extents.x*extents.z); + + m_temp0 = Vector4( + extents.y * extents.z * temp, + extents.x * extents.z * temp, + extents.x * extents.y * temp, + 0.0f); + + m_temp1 = Vector4( + (extents.y + extents.z) * temp, + (extents.x + extents.z) * temp, + (extents.x + extents.y) * temp, + 1.0f / extents.w); + } + + /** + * Given a split on axis \a axis that produces children having extents + * \a leftWidth and \a rightWidth along \a axis, compute the probability + * of traversing the left and right child during a typical query + * operation. + */ + inline std::pair operator()(int axis, Float leftWidth, Float rightWidth) const { + if (axis == 3 && m_temp1.w == std::numeric_limits::infinity()) { + return std::pair( + std::numeric_limits::infinity(), + std::numeric_limits::infinity() + ); + } + + return std::pair( + m_temp0[axis] + m_temp1[axis] * leftWidth, + m_temp0[axis] + m_temp1[axis] * rightWidth); + } + + /** + * Compute the underlying quantity used by the tree construction + * heuristic. This is used to compute the final cost of a kd-tree. + */ + inline static Float getQuantity(const AABB4 &aabb) { + const Vector4 extents(aabb.getExtents()); + Float result = 2 * (extents[0] * extents[1] + extents[1] * extents[2] + + extents[2] * extents[0]); + if (extents[3] != 0) + result *= extents[3]; + return result; + } +private: + Vector4 m_temp0, m_temp1; + AABB4 m_aabb; +}; + +/** + * This class specializes \ref GenericKDTree to a four-dimensional + * tree to be used for spacetime ray tracing. One additional function call + * must be implemented by subclasses: + * + * /// Check whether a primitive is intersected by the given ray. + * /// Some temporary space is supplied, which can be used to cache + * /// information about the intersection + * bool intersect(const Ray &ray, IndexType idx, + * Float mint, Float maxt, Float &t, void *tmp); + * + * This class implements an epsilon-free version of the optimized ray + * traversal algorithm (TA^B_{rec}), which is explained in Vlastimil + * Havran's PhD thesis "Heuristic Ray Shooting Algorithms". + * + * \author Wenzel Jakob + */ +template + class SAHKDTree4D : public GenericKDTree { +public: + typedef typename KDTreeBase::SizeType SizeType; + typedef typename KDTreeBase::IndexType IndexType; + typedef typename KDTreeBase::KDNode KDNode; + +protected: + void buildInternal() { + SizeType primCount = this->cast()->getPrimitiveCount(); + KDLog(EInfo, "Constructing a 4D SAH kd-tree (%i primitives) ..", primCount); + GenericKDTree::buildInternal(); + } + + /** + * \brief Hashed mailbox implementation + */ + struct HashedMailbox { + inline HashedMailbox() { + memset(entries, 0xFF, sizeof(IndexType)*MTS_KD_MAILBOX_SIZE); + } + + inline void put(IndexType primIndex) { + entries[primIndex & MTS_KD_MAILBOX_MASK] = primIndex; + } + + inline bool contains(IndexType primIndex) const { + return entries[primIndex & MTS_KD_MAILBOX_MASK] == primIndex; + } + + IndexType entries[MTS_KD_MAILBOX_SIZE]; + }; + + /// Ray traversal stack entry for Havran-style incoherent ray tracing + struct KDStackEntryHavran { + /* Pointer to the far child */ + const KDNode * __restrict node; + /* Distance traveled along the ray (entry or exit) */ + Float t; + /* Previous stack item */ + uint32_t prev; + /* Associated point */ + Point p; + }; + + /** + * \brief Ray tracing kd-tree traversal loop (Havran variant) + * + * This is generally the most robust and fastest traversal routine + * of the methods implemented in this class. + */ + template FINLINE + bool rayIntersectHavran(const Ray &ray, Float mint, Float maxt, + Float &t, void *temp) const { + KDStackEntryHavran stack[MTS_KD_MAXDEPTH]; + #if 0 + static const int prevAxisTable[] = { 2, 0, 1 }; + static const int nextAxisTable[] = { 1, 2, 0 }; + #endif + + #if defined(MTS_KD_MAILBOX_ENABLED) + HashedMailbox mailbox; + #endif + + /* Set up the entry point */ + uint32_t enPt = 0; + stack[enPt].t = mint; + stack[enPt].p = ray(mint); + + /* Set up the exit point */ + uint32_t exPt = 1; + stack[exPt].t = maxt; + stack[exPt].p = ray(maxt); + stack[exPt].node = NULL; + + bool foundIntersection = false; + const KDNode * __restrict currNode = this->m_nodes; + while (currNode != NULL) { + while (EXPECT_TAKEN(!currNode->isLeaf())) { + const Float splitVal = (Float) currNode->getSplit(); + const int axis = currNode->getAxis(); + const KDNode * __restrict farChild; + + if (axis == 3) { + if (ray.time <= splitVal) + currNode = currNode->getLeft(); + else + currNode = currNode->getRight(); + continue; + } else if (stack[enPt].p[axis] <= splitVal) { + if (stack[exPt].p[axis] <= splitVal) { + /* Cases N1, N2, N3, P5, Z2 and Z3 (see thesis) */ + currNode = currNode->getLeft(); + continue; + } + + /* Typo in Havran's thesis: + (it specifies "stack[exPt].p == splitVal", which + is clearly incorrect) */ + if (stack[enPt].p[axis] == splitVal) { + /* Case Z1 */ + currNode = currNode->getRight(); + continue; + } + + /* Case N4 */ + currNode = currNode->getLeft(); + farChild = currNode + 1; // getRight() + } else { /* stack[enPt].p[axis] > splitVal */ + if (splitVal < stack[exPt].p[axis]) { + /* Cases P1, P2, P3 and N5 */ + currNode = currNode->getRight(); + continue; + } + /* Case P4 */ + farChild = currNode->getLeft(); + currNode = farChild + 1; // getRight() + } + + /* Cases P4 and N4 -- calculate the distance to the split plane */ + Float distToSplit = (splitVal - ray.o[axis]) * ray.dRcp[axis]; + + /* Set up a new exit point */ + const uint32_t tmp = exPt++; + if (exPt == enPt) /* Do not overwrite the entry point */ + ++exPt; + + KDAssert(exPt < MTS_KD_MAXDEPTH); + stack[exPt].prev = tmp; + stack[exPt].t = distToSplit; + stack[exPt].node = farChild; + + #if 1 + /* Intrestingly, this appears to be faster than the + original code with the prevAxis & nextAxis table */ + stack[exPt].p = ray(distToSplit); + stack[exPt].p[axis] = splitVal; + #else + const int nextAxis = nextAxisTable[axis]; + const int prevAxis = prevAxisTable[axis]; + stack[exPt].p[axis] = splitVal; + stack[exPt].p[nextAxis] = ray.o[nextAxis] + + distToSplit*ray.d[nextAxis]; + stack[exPt].p[prevAxis] = ray.o[prevAxis] + + distToSplit*ray.d[prevAxis]; + #endif + + } + + /* Reached a leaf node */ + for (IndexType entry=currNode->getPrimStart(), + last = currNode->getPrimEnd(); entry != last; entry++) { + const IndexType primIdx = this->m_indices[entry]; + + #if defined(MTS_KD_MAILBOX_ENABLED) + if (mailbox.contains(primIdx)) + continue; + #endif + + bool result; + if (!shadowRay) + result = this->cast()->intersect(ray, primIdx, mint, maxt, t, temp); + else + result = this->cast()->intersect(ray, primIdx, mint, maxt); + + if (result) { + if (shadowRay) + return true; + maxt = t; + foundIntersection = true; + } + + #if defined(MTS_KD_MAILBOX_ENABLED) + mailbox.put(primIdx); + #endif + } + + if (stack[exPt].t > maxt) + break; + + /* Pop from the stack and advance to the next node on the interval */ + enPt = exPt; + currNode = stack[exPt].node; + exPt = stack[enPt].prev; + } + + return foundIntersection; + } +}; + +MTS_NAMESPACE_END + +#endif /* __SAH_KDTREE4_H */ diff --git a/src/shapes/SConscript b/src/shapes/SConscript index 6abc53ce..2561dc83 100644 --- a/src/shapes/SConscript +++ b/src/shapes/SConscript @@ -12,5 +12,6 @@ plugins += env.SharedLibrary('hair', ['hair.cpp']) plugins += env.SharedLibrary('shapegroup', ['shapegroup.cpp']) plugins += env.SharedLibrary('instance', ['instance.cpp']) plugins += env.SharedLibrary('animatedinstance', ['animatedinstance.cpp']) +plugins += env.SharedLibrary('pointcache', ['pointcache.cpp']) Export('plugins') diff --git a/src/shapes/pointcache.cpp b/src/shapes/pointcache.cpp new file mode 100644 index 00000000..f208690d --- /dev/null +++ b/src/shapes/pointcache.cpp @@ -0,0 +1,435 @@ +/* + This file is part of Mitsuba, a physically based rendering system. + + Copyright (c) 2007-2012 by Wenzel Jakob and others. + + Mitsuba is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License Version 3 + as published by the Free Software Foundation. + + Mitsuba is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include +#include +#include + +#define SHAPE_PER_SEGMENT 1 +#define NO_CLIPPING_SUPPORT 1 + +MTS_NAMESPACE_BEGIN + +class SpaceTimeKDTree : public SAHKDTree4D { + friend class GenericKDTree; + friend class SAHKDTree4D; +public: + /// Temporarily holds some intersection information + struct IntersectionCache { + Point p[3]; + Float u, v; + }; + + SpaceTimeKDTree(const std::vector &frameTimes, std::vector &positions, + Triangle *triangles, size_t vertexCount, size_t triangleCount) + : m_frameTimes(frameTimes), m_positions(positions), m_triangles(triangles), + m_vertexCount(vertexCount), m_triangleCount(triangleCount) { + + Log(EInfo, "Total amount of vertex data: %s", + memString(vertexCount*frameTimes.size()*sizeof(float)*3).c_str()); + + //setClip(false); + //setExactPrimitiveThreshold(10); + buildInternal(); + + /* Collect some statistics */ + std::stack stack; + + stack.push(m_nodes); + size_t spatialSplits = 0, timeSplits = 0; + while (!stack.empty()) { + const KDNode *node = stack.top(); + stack.pop(); + if (!node->isLeaf()) { + if (node->getAxis() == 3) { + timeSplits++; + } else { + spatialSplits++; + } + stack.push((const KDNode *) node->getLeft()); + stack.push((const KDNode *) node->getRight()); + } + } + + KDLog(EInfo, "Spacetime kd-tree statistics"); + KDLog(EInfo, " Time interval = [%f, %f]" , m_tightAABB.min.w, m_tightAABB.max.w); + KDLog(EInfo, " Spatial splits = " SIZE_T_FMT, spatialSplits); + KDLog(EInfo, " Time splits = " SIZE_T_FMT, timeSplits); + KDLog(EInfo, ""); + + m_spatialAABB = AABB( + Point(m_aabb.min.x, m_aabb.min.y, m_aabb.min.z), + Point(m_aabb.max.x, m_aabb.max.y, m_aabb.max.z) + ); + } + + /// Return one of the points stored in the point cache + inline Point getPoint(uint32_t frame, uint32_t index) const { + float *ptr = m_positions[frame] + index*3; +#if defined(__LITTLE_ENDIAN__) + return Point( + (Float) endianness_swap(ptr[0]), + (Float) endianness_swap(ptr[1]), + (Float) endianness_swap(ptr[2])); +#else + return Point((Float) ptr[0], (Float) ptr[1], (Float) ptr[2]); +#endif + } + + // ======================================================================== + // Implementation of functions required by the parent class + // ======================================================================== + + /// Return the total number of primitives that are organized in the tree + inline SizeType getPrimitiveCount() const { +#ifdef SHAPE_PER_SEGMENT + return m_triangleCount * (m_frameTimes.size() - 1); +#else + return m_triangleCount; +#endif + } + + /// Return the 4D extents for one of the primitives contained in the tree + AABB4 getAABB(IndexType index) const { +#ifdef SHAPE_PER_SEGMENT + int frameIdx = index / m_triangleCount; + int triangleIdx = index % m_triangleCount; + const Triangle &tri = m_triangles[triangleIdx]; + + AABB aabb; + for (int i=0; i<3; ++i) { + aabb.expandBy(getPoint(frameIdx, tri.idx[i])); + aabb.expandBy(getPoint(frameIdx+1, tri.idx[i])); + } + + return AABB4( + Point4(aabb.min.x, aabb.min.y, aabb.min.z, m_frameTimes[frameIdx]), + Point4(aabb.max.x, aabb.max.y, aabb.max.z, m_frameTimes[frameIdx+1]) + ); +#else + AABB aabb; + const Triangle &tri = m_triangles[index]; + for (size_t i=0; i 1) + return false; + + /* Compute interpolated positions */ + Point p[3]; + for (int i=0; i<3; ++i) + p[i] = (1 - alpha) * getPoint(frameIdx, tri.idx[i]) + + alpha * getPoint(frameIdx+1, tri.idx[i]); + + Float tempU, tempV, tempT; + if (!Triangle::rayIntersect(p[0], p[1], p[2], ray, tempU, tempV, tempT)) + return false; + if (tempT < mint || tempT > maxt) + return false; + + if (tmp != NULL) { + IntersectionCache *cache = + static_cast(tmp); + t = tempT; + memcpy(cache->p, p, sizeof(Point)*3); + cache->u = tempU; + cache->v = tempV; + } + return true; + } + + /// Cast a shadow ray against a specific triangle + inline bool intersect(const Ray &ray, IndexType idx, + Float mint, Float maxt) const { + Float tempT; + /* No optimized version for shadow rays yet */ + return intersect(ray, idx, mint, maxt, tempT, NULL); + } + + // ======================================================================== + // Miscellaneous + // ======================================================================== + + /// Intersect a ray with all primitives stored in the kd-tree + inline bool rayIntersect(const Ray &ray, Float _mint, Float _maxt, + Float &t, void *temp) const { + Float tempT = std::numeric_limits::infinity(); + Float mint, maxt; + + if (m_spatialAABB.rayIntersect(ray, mint, maxt)) { + if (_mint > mint) mint = _mint; + if (_maxt < maxt) maxt = _maxt; + + if (EXPECT_TAKEN(maxt > mint && ray.time >= m_aabb.min.w && ray.time <= m_aabb.max.w)) { + if (rayIntersectHavran(ray, mint, maxt, tempT, temp)) { + t = tempT; + return true; + } + } + } + return false; + } + + /** + * \brief Intersect a ray with all primitives stored in the kd-tree + * (Visiblity query version) + */ + inline bool rayIntersect(const Ray &ray, Float _mint, Float _maxt) const { + Float tempT = std::numeric_limits::infinity(); + Float mint, maxt; + + if (m_spatialAABB.rayIntersect(ray, mint, maxt)) { + if (_mint > mint) mint = _mint; + if (_maxt < maxt) maxt = _maxt; + + if (EXPECT_TAKEN(maxt > mint && ray.time >= m_aabb.min.w && ray.time <= m_aabb.max.w)) + if (rayIntersectHavran(ray, mint, maxt, tempT, NULL)) + return true; + } + return false; + } + + inline const Triangle *getTriangles() const { + return m_triangles; + } + + /// Return an AABB with the spatial extents + inline const AABB &getSpatialAABB() const { + return m_spatialAABB; + } + + MTS_DECLARE_CLASS() +protected: + std::vector m_frameTimes; + std::vector m_positions; + Triangle *m_triangles; + size_t m_vertexCount; + size_t m_triangleCount; + AABB m_spatialAABB; +}; + +class PointCache : public Shape { +public: + PointCache(const Properties &props) : Shape(props) { + FileResolver *fResolver = Thread::getThread()->getFileResolver(); + fs::path path = fResolver->resolve(props.getString("filename")); + if (path.extension() != ".mdd") + Log(EError, "Point cache files must have the extension \".mdd\""); + + m_mmap = new MemoryMappedFile(path); + + ref mStream = new MemoryStream((uint8_t *) m_mmap->getData(), + m_mmap->getSize()); + mStream->setByteOrder(Stream::EBigEndian); + + uint32_t frameCount = mStream->readUInt(); + m_vertexCount = mStream->readUInt(); + + Log(EInfo, "Point cache has %i frames and %i vertices", frameCount, m_vertexCount); + + for (uint32_t i=0; ireadSingle()); + + for (uint32_t i=0; i(mStream->getCurrentData())); + mStream->skip(m_vertexCount * 3 * sizeof(float)); + } + Assert(mStream->getPos() == mStream->getSize()); + } + + PointCache(Stream *stream, InstanceManager *manager) + : Shape(stream, manager) { + /// TBD + } + + void serialize(Stream *stream, InstanceManager *manager) const { + Shape::serialize(stream, manager); + /// TBD + } + + void configure() { + Shape::configure(); + + if (m_mesh == NULL) + Log(EError, "A nested triangle mesh is required so that " + "connectivity information can be extracted!"); + if (m_mesh->getVertexCount() != m_vertexCount) + Log(EError, "Point cache and nested geometry have mismatched " + "numbers of vertices!"); + + m_kdtree = new SpaceTimeKDTree(m_frameTimes, m_positions, m_mesh->getTriangles(), + m_vertexCount, m_mesh->getTriangleCount()); + m_aabb = m_kdtree->getSpatialAABB(); + } + + bool rayIntersect(const Ray &ray, Float mint, + Float maxt, Float &t, void *temp) const { + return m_kdtree->rayIntersect(ray, mint, maxt, t, temp); + } + + bool rayIntersect(const Ray &ray, Float mint, Float maxt) const { + return m_kdtree->rayIntersect(ray, mint, maxt); + } + + void fillIntersectionRecord(const Ray &ray, + const void *temp, Intersection &its) const { + const SpaceTimeKDTree::IntersectionCache *cache + = reinterpret_cast(temp); + + const Vector b(1 - cache->u - cache->v, cache->u, cache->v); + const Point p0 = cache->p[0]; + const Point p1 = cache->p[1]; + const Point p2 = cache->p[2]; + + Normal faceNormal(cross(p1-p0, p2-p0)); + Float length = faceNormal.length(); + if (!faceNormal.isZero()) + faceNormal /= length; + + /* Just the basic attributes for now and geometric normals */ + its.p = ray(its.t); + its.geoFrame = Frame(faceNormal); + its.shFrame = its.geoFrame; + its.wi = its.toLocal(-ray.d); + its.shape = this; + its.hasUVPartials = false; + its.time = ray.time; + } + + AABB getAABB() const { + return m_kdtree->getSpatialAABB(); + } + + Float getSurfaceArea() const { + Log(EError, "PointCache::getSurfaceArea(): Not implemented."); + return -1; + } + + size_t getPrimitiveCount() const { + return m_mesh->getTriangleCount(); + } + + size_t getEffectivePrimitiveCount() const { + return m_mesh->getTriangleCount(); + } + + void addChild(const std::string &name, ConfigurableObject *child) { + const Class *cClass = child->getClass(); + if (cClass->derivesFrom(TriMesh::m_theClass)) { + Assert(m_mesh == NULL); + m_mesh = static_cast(child); + } else { + Shape::addChild(name, child); + } + } + + std::string toString() const { + std::ostringstream oss; + oss << "PointCache[" << endl + << "]"; + return oss.str(); + } + + MTS_DECLARE_CLASS() +private: + ref m_mmap; + ref m_kdtree; + std::vector m_frameTimes; + std::vector m_positions; + ref m_mesh; + uint32_t m_vertexCount; + AABB m_aabb; +}; + +MTS_IMPLEMENT_CLASS(SpaceTimeKDTree, false, KDTreeBase) +MTS_IMPLEMENT_CLASS_S(PointCache, false, Shape) +MTS_EXPORT_PLUGIN(PointCache, "Point cache"); +MTS_NAMESPACE_END From 544080e808ace8aa6ecbacf06ab58ddee65058a6 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Fri, 26 Oct 2012 02:15:32 -0400 Subject: [PATCH 02/18] some work towards animated transformation support --- build/config-macos10.7-gcc-x86_64.py | 2 +- data/schema/scene.xsd | 28 ++++- include/mitsuba/core/math.h | 142 ++++++++++++++++++++++++++ include/mitsuba/core/quat.h | 38 ++++--- include/mitsuba/core/stl.h | 117 +-------------------- include/mitsuba/mitsuba.h | 1 + include/mitsuba/render/scenehandler.h | 4 +- include/mitsuba/render/track.h | 109 +++++++++++++++++--- src/converter/SConscript | 2 +- src/libbidir/SConscript | 2 +- src/libcore/SConscript | 6 +- src/libhw/SConscript | 6 +- src/librender/SConscript | 10 +- src/librender/scenehandler.cpp | 69 ++++++++++++- src/librender/track.cpp | 64 +++++++++--- src/mtsgui/SConscript | 4 +- src/shapes/cylinder.cpp | 2 +- src/tests/SConscript | 2 +- 18 files changed, 420 insertions(+), 188 deletions(-) create mode 100644 include/mitsuba/core/math.h diff --git a/build/config-macos10.7-gcc-x86_64.py b/build/config-macos10.7-gcc-x86_64.py index b4112976..5714db52 100644 --- a/build/config-macos10.7-gcc-x86_64.py +++ b/build/config-macos10.7-gcc-x86_64.py @@ -6,7 +6,7 @@ CCFLAGS = ['-arch', 'x86_64', '-mmacosx-version-min=10.7', '-march=nocona LINKFLAGS = ['-framework', 'OpenGL', '-framework', 'Cocoa', '-arch', 'x86_64', '-mmacosx-version-min=10.7', '-Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk', '-Wl,-headerpad,128'] BASEINCLUDE = ['#include', '#dependencies/include'] BASELIBDIR = ['#dependencies/lib'] -BASELIB = ['m', 'pthread', 'gomp', 'Half'] +BASELIB = ['m', 'pthread', 'Half'] OEXRINCLUDE = ['#dependencies/include/OpenEXR'] OEXRLIB = ['IlmImf', 'Imath', 'Iex', 'z'] PNGLIB = ['png'] diff --git a/data/schema/scene.xsd b/data/schema/scene.xsd index 1a073b82..18de916b 100644 --- a/data/schema/scene.xsd +++ b/data/schema/scene.xsd @@ -26,7 +26,7 @@ - + @@ -43,6 +43,7 @@ + @@ -50,14 +51,14 @@ - + - + @@ -140,7 +141,7 @@ - + @@ -297,7 +298,7 @@ - + @@ -314,6 +315,23 @@ + + + + + + + + + + + + + + + + + diff --git a/include/mitsuba/core/math.h b/include/mitsuba/core/math.h new file mode 100644 index 00000000..2d01b4ab --- /dev/null +++ b/include/mitsuba/core/math.h @@ -0,0 +1,142 @@ +/* + This file is part of Mitsuba, a physically based rendering system. + + Copyright (c) 2007-2012 by Wenzel Jakob and others. + + Mitsuba is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License Version 3 + as published by the Free Software Foundation. + + Mitsuba is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#pragma once + +#if !defined(__MITSUBA_CORE_MATH_H_) +#define __MITSUBA_CORE_MATH_H_ + +MTS_NAMESPACE_BEGIN + +namespace math { +#if defined(__LINUX__) && defined(__x86_64__) + /* + The Linux/x86_64 single precision implementations of 'exp' + and 'log' suffer from a serious performance regression. + It is about 5x faster to use the double-precision versions + with the extra overhead of the involved FP conversion. + + Until this is fixed, the following aliases make sure that + the fastest implementation is used in every case. + */ + inline float fastexp(float value) { + return (float) ::exp((double) value); + } + + inline double fastexp(double value) { + return ::exp(value); + } + + inline float fastlog(float value) { + return (float) ::log((double) value); + } + + inline double fastlog(double value) { + return ::log(value); + } +#else + inline float fastexp(float value) { + return ::expf(value); + } + + inline double fastexp(double value) { + return ::exp(value); + } + + inline float fastlog(float value) { + return ::logf(value); + } + + inline double fastlog(double value) { + return ::log(value); + } +#endif + +#if defined(_GNU_SOURCE) + inline void sincos(float theta, float *sin, float *cos) { + ::sincosf(theta, sin, cos); + } + + inline void sincos(double theta, double *sin, double *cos) { + ::sincos(theta, sin, cos); + } + +#else + inline void sincos(float theta, float *_sin, float *_cos) { + *_sin = sinf(theta); + *_cos = cosf(theta); + } + + inline void sincos(double theta, double *_sin, double *_cos) { + *_sin = sin(theta); + *_cos = cos(theta); + } +#endif + + /// Arcsine variant that gracefully handles arguments > 1 that are due to roundoff errors + inline float safe_asin(float value) { + return std::asin(std::min(1.0f, std::max(-1.0f, value))); + } + + /// Arcsine variant that gracefully handles arguments > 1 that are due to roundoff errors + inline double safe_asin(double value) { + return std::asin(std::min(1.0, std::max(-1.0, value))); + } + + /// Arccosine variant that gracefully handles arguments > 1 that are due to roundoff errors + inline float safe_acos(float value) { + return std::acos(std::min(1.0f, std::max(-1.0f, value))); + } + + /// Arccosine variant that gracefully handles arguments > 1 that are due to roundoff errors + inline double safe_acos(double value) { + return std::acos(std::min(1.0, std::max(-1.0, value))); + } + + /// Square root variant that gracefully handles arguments < 0 that are due to roundoff errors + inline float safe_sqrt(float value) { + return std::sqrt(std::max(0.0f, value)); + } + + /// Square root variant that gracefully handles arguments < 0 that are due to roundoff errors + inline double safe_sqrt(double value) { + return std::sqrt(std::max(0.0, value)); + } + + /// Simple signum function -- note that it returns the FP sign of the input (and never zero) + inline Float signum(Float value) { + #if defined(__WINDOWS__) + return (Float) _copysign(1.0, value); + #elif defined(SINGLE_PRECISION) + return copysignf((float) 1.0, value); + #elif defined(DOUBLE_PRECISION) + return copysign((double) 1.0, value); + #endif + } +}; /* namespace math */ + +MTS_NAMESPACE_END + +#if defined(_MSC_VER) +extern "C" { + extern MTS_EXPORT_CORE float nextafterf(float x, float y); + extern MTS_EXPORT_CORE double nextafter(double x, double y); +}; +#endif + +#endif /* __MITSUBA_CORE_MATH_H_ */ diff --git a/include/mitsuba/core/quat.h b/include/mitsuba/core/quat.h index cb8d98ee..66067290 100644 --- a/include/mitsuba/core/quat.h +++ b/include/mitsuba/core/quat.h @@ -132,12 +132,17 @@ template struct TQuaternion { /// Equality test bool operator==(const TQuaternion &q) const { - return v == q.v && v.w == q.w; + return v == q.v && w == q.w; } /// Inequality test bool operator!=(const TQuaternion &q) const { - return v != q.v || v.w != q.w; + return v != q.v || w != q.w; + } + + /// Identity test + bool isIdentity() const { + return v.isZero() && w == 1; } /// Return the rotation axis of this quaternion @@ -216,39 +221,42 @@ template struct TQuaternion { } } + inline static TQuaternion fromTransform(const Transform &trafo) { + return fromMatrix(trafo.getMatrix()); + } + /** * \brief Construct an unit quaternion matching the supplied * rotation matrix. */ - static TQuaternion fromTransform(const Transform trafo) { + static TQuaternion fromMatrix(const Matrix4x4 &m) { /// Implementation from PBRT - const Matrix4x4 &m = trafo.getMatrix(); - T trace = m.m[0][0] + m.m[1][1] + m.m[2][2]; + T trace = m(0, 0) + m(1, 1) + m(2, 2); TVector3 v; T w; if (trace > 0.f) { // Compute w from matrix trace, then xyz - // 4w^2 = m[0][0] + m[1][1] + m[2][2] + m[3][3] (but m[3][3] == 1) + // 4w^2 = m[0, 0] + m[1, 1] + m[2, 2] + m[3, 3] (but m[3, 3] == 1) T s = std::sqrt(trace + 1.0f); w = s / 2.0f; s = 0.5f / s; - v.x = (m.m[2][1] - m.m[1][2]) * s; - v.y = (m.m[0][2] - m.m[2][0]) * s; - v.z = (m.m[1][0] - m.m[0][1]) * s; + v.x = (m(2, 1) - m(1, 2)) * s; + v.y = (m(0, 2) - m(2, 0)) * s; + v.z = (m(1, 0) - m(0, 1)) * s; } else { // Compute largest of $x$, $y$, or $z$, then remaining components const int nxt[3] = {1, 2, 0}; T q[3]; int i = 0; - if (m.m[1][1] > m.m[0][0]) i = 1; - if (m.m[2][2] > m.m[i][i]) i = 2; + if (m(1, 1) > m(0, 0)) i = 1; + if (m(2, 2) > m(i, i)) i = 2; int j = nxt[i]; int k = nxt[j]; - T s = std::sqrt((m.m[i][i] - (m.m[j][j] + m.m[k][k])) + 1.0); + T s = std::sqrt((m(i, i) - (m(j, j) + m(k, k))) + 1.0f); q[i] = s * 0.5f; if (s != 0.f) s = 0.5f / s; - w = (m.m[k][j] - m.m[j][k]) * s; - q[j] = (m.m[j][i] + m.m[i][j]) * s; - q[k] = (m.m[k][i] + m.m[i][k]) * s; + w = (m(k, j) - m(j, k)) * s; + q[j] = (m(j, i) + m(i, j)) * s; + q[k] = (m(k, i) + m(i, k)) * s; v.x = q[0]; v.y = q[1]; v.z = q[2]; diff --git a/include/mitsuba/core/stl.h b/include/mitsuba/core/stl.h index 05eb48ef..bf0276ff 100644 --- a/include/mitsuba/core/stl.h +++ b/include/mitsuba/core/stl.h @@ -103,121 +103,6 @@ namespace std { using std::select2nd; using std::compose1; #endif +/// \endcond -namespace mitsuba { -namespace math { -#if defined(__LINUX__) && defined(__x86_64__) - /* - The Linux/x86_64 single precision implementations of 'exp' - and 'log' suffer from a serious performance regression. - It is about 5x faster to use the double-precision versions - with the extra overhead of the involved FP conversion. - - Until this is fixed, the following aliases make sure that - the fastest implementation is used in every case. - */ - inline float fastexp(float value) { - return (float) ::exp((double) value); - } - - inline double fastexp(double value) { - return ::exp(value); - } - - inline float fastlog(float value) { - return (float) ::log((double) value); - } - - inline double fastlog(double value) { - return ::log(value); - } -#else - inline float fastexp(float value) { - return ::expf(value); - } - - inline double fastexp(double value) { - return ::exp(value); - } - - inline float fastlog(float value) { - return ::logf(value); - } - - inline double fastlog(double value) { - return ::log(value); - } -#endif - -#if defined(_GNU_SOURCE) - inline void sincos(float theta, float *sin, float *cos) { - ::sincosf(theta, sin, cos); - } - - inline void sincos(double theta, double *sin, double *cos) { - ::sincos(theta, sin, cos); - } - -#else - inline void sincos(float theta, float *_sin, float *_cos) { - *_sin = sinf(theta); - *_cos = cosf(theta); - } - - inline void sincos(double theta, double *_sin, double *_cos) { - *_sin = sin(theta); - *_cos = cos(theta); - } -#endif - - /// Arcsine variant that gracefully handles arguments > 1 that are due to roundoff errors - inline float safe_asin(float value) { - return std::asin(std::min(1.0f, std::max(-1.0f, value))); - } - - /// Arcsine variant that gracefully handles arguments > 1 that are due to roundoff errors - inline double safe_asin(double value) { - return std::asin(std::min(1.0, std::max(-1.0, value))); - } - - /// Arccosine variant that gracefully handles arguments > 1 that are due to roundoff errors - inline float safe_acos(float value) { - return std::acos(std::min(1.0f, std::max(-1.0f, value))); - } - - /// Arccosine variant that gracefully handles arguments > 1 that are due to roundoff errors - inline double safe_acos(double value) { - return std::acos(std::min(1.0, std::max(-1.0, value))); - } - - /// Square root variant that gracefully handles arguments < 0 that are due to roundoff errors - inline float safe_sqrt(float value) { - return std::sqrt(std::max(0.0f, value)); - } - - /// Square root variant that gracefully handles arguments < 0 that are due to roundoff errors - inline double safe_sqrt(double value) { - return std::sqrt(std::max(0.0, value)); - } - - /// Simple signum function -- note that it returns the FP sign of the input (and never zero) - inline Float signum(Float value) { - #if defined(__WINDOWS__) - return (Float) _copysign(1.0, value); - #elif defined(SINGLE_PRECISION) - return copysignf((float) 1.0, value); - #elif defined(DOUBLE_PRECISION) - return copysign((double) 1.0, value); - #endif - } -}; /* namespace math */ -}; /* namespace mitsuba */ - -#if defined(_MSC_VER) -extern "C" { - extern MTS_EXPORT_CORE float nextafterf(float x, float y); - extern MTS_EXPORT_CORE double nextafter(double x, double y); -}; -#endif -/// @endcond #endif /* __MITSUBA_CORE_STL_H_ */ diff --git a/include/mitsuba/mitsuba.h b/include/mitsuba/mitsuba.h index 16a1c90c..d097e798 100644 --- a/include/mitsuba/mitsuba.h +++ b/include/mitsuba/mitsuba.h @@ -46,6 +46,7 @@ using std::endl; #include #include #include +#include #include #include #include diff --git a/include/mitsuba/render/scenehandler.h b/include/mitsuba/render/scenehandler.h index c8a4a149..ed8cf018 100644 --- a/include/mitsuba/render/scenehandler.h +++ b/include/mitsuba/render/scenehandler.h @@ -155,7 +155,8 @@ private: EBoolean, EString, ETranslate, ERotate, ELookAt, EScale, EMatrix, EPoint, EVector, ERGB, ESRGB, EBlackBody, - ESpectrum, ETransform, EInclude, EAlias + ESpectrum, ETransform, EAnimation, + EInclude, EAlias }; typedef std::pair TagEntry; @@ -170,6 +171,7 @@ private: std::stack m_context; TagMap m_tags; Transform m_transform; + ref m_animatedTransform; bool m_isIncludedFile; }; diff --git a/include/mitsuba/render/track.h b/include/mitsuba/render/track.h index 25049a3d..8b3a9523 100644 --- a/include/mitsuba/render/track.h +++ b/include/mitsuba/render/track.h @@ -82,9 +82,9 @@ protected: */ template class AnimationTrack : public AbstractAnimationTrack { public: - typedef T value_type; + typedef T ValueType; - AnimationTrack(EType type, size_t nKeyframes) + AnimationTrack(EType type, size_t nKeyframes = 0) : AbstractAnimationTrack(type, nKeyframes), m_values(nKeyframes) { } AnimationTrack(EType type, Stream *stream) @@ -96,10 +96,19 @@ public: } /// Set the value of a certain keyframe - inline void setValue(size_t idx, const value_type &value) { m_values[idx] = value; } + inline void setValue(size_t idx, const ValueType &value) { m_values[idx] = value; } /// Return the value of a certain keyframe - inline const value_type &getValue(size_t idx) const { return m_values[idx]; } + inline const ValueType &getValue(size_t idx) const { return m_values[idx]; } + + /// Reserve space for a certain number of entries + inline void reserve(size_t count) { m_times.reserve(count); m_values.reserve(count); } + + /// Append a value + inline void append(Float time, const ValueType &value) { + m_times.push_back(time); + m_values.push_back(value); + } /// Serialize to a binary data stream inline void serialize(Stream *stream) const { @@ -111,7 +120,7 @@ public: } /// Evaluate the animation track at an arbitrary time value - inline value_type eval(Float time) const { + inline ValueType eval(Float time) const { SAssert(m_times.size() > 0); std::vector::const_iterator entry = std::lower_bound(m_times.begin(), m_times.end(), time); @@ -126,19 +135,61 @@ public: } return lerp(idx0, idx1, t); } + +private: + struct SortPredicate { + inline bool operator()(const std::pair &p1, + const std::pair &p2) const { + return p1.first < p2.first; + } + }; + + struct MatchPredicate { + inline bool operator()(const std::pair &p1, + const std::pair &p2) const { + return p1.first == p2.first || p1.second == p2.second; + } + }; + +public: + /** + * \brief Sort all animation tracks and remove + * unnecessary data (for user-provided input) + * + * \return \c false if this animation track was deemed to be unnecessary + * after the cleanup (for instance, it only contains (0,0,0) translation operations) + */ + bool sortAndSimplify() { + SAssert(m_values.size() == m_times.size()); + std::vector< std::pair > temp(m_values.size()); + for (size_t i=0; i 0 || !isNoOp(m_values[0]); + } protected: /// Evaluate the animation track using linear interpolation - inline value_type lerp(size_t idx0, size_t idx1, Float t) const; + inline ValueType lerp(size_t idx0, size_t idx1, Float t) const; - inline void unserialize(Stream *stream, value_type &value) { - value = stream->readElement(); + /// Is this a "no-op" transformation? + inline bool isNoOp(const ValueType &value) const; + + inline void unserialize(Stream *stream, ValueType &value) { + value = stream->readElement(); } - inline void serialize(Stream *stream, const value_type &value) const { - stream->writeElement(value); + inline void serialize(Stream *stream, const ValueType &value) const { + stream->writeElement(value); } private: - std::vector m_values; + std::vector m_values; }; template inline T AnimationTrack::lerp(size_t idx0, size_t idx1, Float t) const { @@ -150,6 +201,32 @@ template<> inline Quaternion AnimationTrack::lerp(size_t idx0, size_ return slerp(m_values[idx0], m_values[idx1], t); } +template inline bool AnimationTrack::isNoOp(const ValueType &value) const { + return false; +} + +template<> inline bool AnimationTrack::isNoOp(const Float &value) const { + if ((m_type == ETranslationX || m_type == ETranslationY || m_type == ETranslationZ) && value == 0) + return true; + else if ((m_type == ERotationX || m_type == ERotationY || m_type == ERotationZ) && value == 0) + return true; + else if ((m_type == EScaleX || m_type == EScaleY || m_type == EScaleZ) && value == 1) + return true; + return false; +} + +template<> inline bool AnimationTrack::isNoOp(const Vector &value) const { + if (m_type == ETranslationXYZ && value.isZero()) + return true; + else if (m_type == EScaleXYZ && (value.x == 1 && value.y == 1 && value.z == 1)) + return true; + return false; +} + +template<> inline bool AnimationTrack::isNoOp(const Quaternion &value) const { + return value.isIdentity(); +} + template<> inline void AnimationTrack::unserialize(Stream *stream, Point &value) { value = Point(stream); } @@ -179,7 +256,7 @@ template<> inline void AnimationTrack::serialize(Stream *stream, con * \ingroup librender */ class MTS_EXPORT_RENDER AnimatedTransform : public Object { -protected: +private: /// Internal functor used by \ref eval() and \ref SimpleCache struct MTS_EXPORT_RENDER TransformFunctor { public: @@ -221,7 +298,7 @@ public: * to this function. */ inline const Transform &eval(Float t) const { - if (m_tracks.size() == 0) + if (EXPECT_TAKEN(m_tracks.size() == 0)) return m_transform; else return m_cache.get(TransformFunctor(m_tracks), t); @@ -230,6 +307,12 @@ public: /// Is the animation static? inline bool isStatic() const { return m_tracks.size() == 0; } + /** + * \brief Sort all animation tracks and remove unnecessary + * data (for user-provided input) + */ + void sortAndSimplify(); + /// Transform a point by an affine / non-projective matrix inline Point transformAffine(Float t, const Point &p) const { return eval(t).transformAffine(p); diff --git a/src/converter/SConscript b/src/converter/SConscript index 626a9906..2c6b8b2b 100644 --- a/src/converter/SConscript +++ b/src/converter/SConscript @@ -18,7 +18,7 @@ if hasCollada: colladaEnv.StaticObject('obj.cpp'), colladaEnv.StaticObject('converter.cpp') ] - colladaEnv.Program('mtsimport', stubs + ['mtsimport.cpp'] + colladaEnv.Program('mtsimport', stubs + ['mtsimport.cpp'] + converter_objects) Return('converter_objects') diff --git a/src/libbidir/SConscript b/src/libbidir/SConscript index 5a78630c..69161888 100644 --- a/src/libbidir/SConscript +++ b/src/libbidir/SConscript @@ -9,7 +9,7 @@ bidirEnv.Append(CPPDEFINES = [['MTS_BUILD_MODULE', 'MTS_MODULE_BIDIR']]) libbidir = bidirEnv.SharedLibrary('mitsuba-bidir', [ 'common.cpp', 'rsampler.cpp', 'vertex.cpp', 'edge.cpp', 'path.cpp', 'verification.cpp', 'util.cpp', 'pathsampler.cpp', - 'mut_bidir.cpp', 'mut_lens.cpp', 'mut_caustic.cpp', + 'mut_bidir.cpp', 'mut_lens.cpp', 'mut_caustic.cpp', 'mut_mchain.cpp', 'manifold.cpp', 'mut_manifold.cpp' ]) diff --git a/src/libcore/SConscript b/src/libcore/SConscript index 62ba5036..eeb437a0 100644 --- a/src/libcore/SConscript +++ b/src/libcore/SConscript @@ -28,10 +28,10 @@ libcore_objects = [ 'class.cpp', 'object.cpp', 'statistics.cpp', 'thread.cpp', 'brent.cpp', 'logger.cpp', 'appender.cpp', 'formatter.cpp', 'lock.cpp', 'qmc.cpp', 'random.cpp', 'timer.cpp', 'util.cpp', 'properties.cpp', 'half.cpp', - 'transform.cpp', 'spectrum.cpp', 'aabb.cpp', 'stream.cpp', + 'transform.cpp', 'spectrum.cpp', 'aabb.cpp', 'stream.cpp', 'fstream.cpp', 'plugin.cpp', 'triangle.cpp', 'bitmap.cpp', - 'fmtconv.cpp', 'serialization.cpp', 'sstream.cpp', 'cstream.cpp', - 'mstream.cpp', 'sched.cpp', 'sched_remote.cpp', 'sshstream.cpp', + 'fmtconv.cpp', 'serialization.cpp', 'sstream.cpp', 'cstream.cpp', + 'mstream.cpp', 'sched.cpp', 'sched_remote.cpp', 'sshstream.cpp', 'zstream.cpp', 'shvector.cpp', 'fresolver.cpp', 'rfilter.cpp', 'quad.cpp', 'mmap.cpp', 'chisquare.cpp', 'warp.cpp', 'vmf.cpp', 'tls.cpp', 'ssemath.cpp' diff --git a/src/libhw/SConscript b/src/libhw/SConscript index c0ca0c82..34ef87af 100644 --- a/src/libhw/SConscript +++ b/src/libhw/SConscript @@ -1,8 +1,8 @@ Import('env', 'sys', 'os') libhw_objects = [ - 'session.cpp', 'device.cpp', 'gputexture.cpp', 'gpugeometry.cpp', - 'gpuprogram.cpp', 'renderer.cpp', 'glrenderer.cpp', 'glprogram.cpp', + 'session.cpp', 'device.cpp', 'gputexture.cpp', 'gpugeometry.cpp', + 'gpuprogram.cpp', 'renderer.cpp', 'glrenderer.cpp', 'glprogram.cpp', 'glgeometry.cpp', 'gltexture.cpp', 'gpusync.cpp', 'glsync.cpp', 'vpl.cpp', 'font.cpp', 'viewer.cpp', 'basicshader.cpp', 'shadow.cpp'] @@ -14,7 +14,7 @@ if sys.platform == 'win32': elif sys.platform == 'linux2': libhw_objects += ['x11session.cpp', 'x11device.cpp', - 'glxdevice.cpp', + 'glxdevice.cpp', 'glxrenderer.cpp'] glEnv = env.Clone() diff --git a/src/librender/SConscript b/src/librender/SConscript index 3404e1b5..fc049f2f 100644 --- a/src/librender/SConscript +++ b/src/librender/SConscript @@ -11,12 +11,12 @@ if renderEnv.has_key('XERCESLIB'): librender = renderEnv.SharedLibrary('mitsuba-render', [ 'bsdf.cpp', 'film.cpp', 'integrator.cpp', 'emitter.cpp', 'sensor.cpp', - 'skdtree.cpp', 'medium.cpp', 'renderjob.cpp', 'imageproc.cpp', + 'skdtree.cpp', 'medium.cpp', 'renderjob.cpp', 'imageproc.cpp', 'rectwu.cpp', 'renderproc.cpp', 'imageblock.cpp', 'particleproc.cpp', - 'renderqueue.cpp', 'scene.cpp', 'subsurface.cpp', 'texture.cpp', - 'shape.cpp', 'trimesh.cpp', 'sampler.cpp', 'util.cpp', 'irrcache.cpp', - 'testcase.cpp', 'photonmap.cpp', 'gatherproc.cpp', 'volume.cpp', - 'vpl.cpp', 'shader.cpp', 'scenehandler.cpp', 'intersection.cpp', + 'renderqueue.cpp', 'scene.cpp', 'subsurface.cpp', 'texture.cpp', + 'shape.cpp', 'trimesh.cpp', 'sampler.cpp', 'util.cpp', 'irrcache.cpp', + 'testcase.cpp', 'photonmap.cpp', 'gatherproc.cpp', 'volume.cpp', + 'vpl.cpp', 'shader.cpp', 'scenehandler.cpp', 'intersection.cpp', 'track.cpp', 'common.cpp', 'phase.cpp', 'noise.cpp', 'photon.cpp' ]) diff --git a/src/librender/scenehandler.cpp b/src/librender/scenehandler.cpp index 30017839..d44d1c79 100644 --- a/src/librender/scenehandler.cpp +++ b/src/librender/scenehandler.cpp @@ -31,6 +31,7 @@ #include #include #include +#include MTS_NAMESPACE_BEGIN XERCES_CPP_NAMESPACE_USE @@ -97,6 +98,7 @@ SceneHandler::SceneHandler(const SAXParser *parser, m_tags["blackbody"] = TagEntry(EBlackBody, (Class *) NULL); m_tags["spectrum"] = TagEntry(ESpectrum, (Class *) NULL); m_tags["transform"] = TagEntry(ETransform, (Class *) NULL); + m_tags["animation"] = TagEntry(EAnimation, (Class *) NULL); m_tags["include"] = TagEntry(EInclude, (Class *) NULL); m_tags["alias"] = TagEntry(EAlias, (Class *) NULL); @@ -167,11 +169,12 @@ void SceneHandler::characters(const XMLCh* const name, Float SceneHandler::parseFloat(const std::string &name, const std::string &str, Float defVal) const { char *end_ptr = NULL; - if (str == "") { + if (str.empty()) { if (defVal == -1) XMLLog(EError, "Missing floating point value (in <%s>)", name.c_str()); return defVal; } + Float result = (Float) std::strtod(str.c_str(), &end_ptr); if (*end_ptr != '\0') XMLLog(EError, "Invalid floating point value specified (in <%s>)", name.c_str()); @@ -240,6 +243,19 @@ void SceneHandler::startElement(const XMLCh* const xmlName, case ETransform: m_transform = Transform(); break; + case EAnimation: { + m_animatedTransform = new AnimatedTransform(); + ref translation = new VectorTrack(VectorTrack::ETranslationXYZ); + ref rotation = new QuatTrack(VectorTrack::ERotationQuat); + ref scaling = new VectorTrack(VectorTrack::EScaleXYZ); + translation->reserve(2); + rotation->reserve(2); + scaling->reserve(2); + m_animatedTransform->addTrack(translation); + m_animatedTransform->addTrack(rotation); + m_animatedTransform->addTrack(scaling); + } + break; default: break; } @@ -575,9 +591,56 @@ void SceneHandler::endElement(const XMLCh* const xmlName) { } break; + case EAnimation: { + m_animatedTransform->sortAndSimplify(); +// context.parent->properties.setAnimatedTransform( +// context.attributes["name"], m_animatedTransform);//XXX + m_animatedTransform = NULL; + } + break; + case ETransform: { - context.parent->properties.setTransform( - context.attributes["name"], m_transform); + if (!m_animatedTransform.get()) { + context.parent->properties.setTransform( + context.attributes["name"], m_transform); + } else { + /* Compute the polar decomposition and insert into the animated transform + uh oh.. we have to get rid of 2 matrix libraries at some point :) */ + typedef Eigen::Matrix EMatrix; + const Matrix4x4 m = m_transform.getMatrix(); + + EMatrix A; + A << m(0, 0), m(0, 1), m(0, 2), + m(1, 0), m(1, 1), m(1, 2), + m(2, 0), m(2, 1), m(2, 2); + + Eigen::JacobiSVD svd(A, Eigen::ComputeFullU | Eigen::ComputeFullV); + EMatrix U = svd.matrixU(), V = svd.matrixV(), S = svd.singularValues().asDiagonal(); + + if (svd.singularValues().prod() < 0) { + S = -S; U = -U; + } + + EMatrix Q = U*V.transpose(); + EMatrix P = V*S*V.transpose(); + + VectorTrack *translation = (VectorTrack *) m_animatedTransform->getTrack(0); + QuatTrack *rotation = (QuatTrack *) m_animatedTransform->getTrack(1); + VectorTrack *scaling = (VectorTrack *) m_animatedTransform->getTrack(2); + + Float time = parseFloat("time", context.attributes["time"]); + rotation->append(time, Quaternion::fromMatrix( + Matrix4x4( + Q(0, 0), Q(0, 1), Q(0, 2), 0.0f, + Q(1, 0), Q(1, 1), Q(1, 2), 0.0f, + Q(2, 0), Q(2, 1), Q(2, 2), 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + ) + )); + + scaling->append(time, Vector(P(0, 0), P(1, 1), P(2, 2))); + translation->append(time, Vector(m(0, 3), m(1, 3), m(2, 3))); + } } break; diff --git a/src/librender/track.cpp b/src/librender/track.cpp index e438d0f4..ea94b217 100644 --- a/src/librender/track.cpp +++ b/src/librender/track.cpp @@ -48,16 +48,7 @@ void AnimatedTransform::addTrack(AbstractAnimationTrack *track) { AABB1 AnimatedTransform::getTimeBounds() const { if (m_tracks.size() == 0) -#if !defined(__clang__) return AABB1(0.0f, 0.0f); -#else - // HACK Workaround for clang - { - AABB1 b; - b.min = b.max = 0.0f; - return b; - } -#endif Float min = std::numeric_limits::infinity(); Float max = -std::numeric_limits::infinity(); @@ -70,15 +61,7 @@ AABB1 AnimatedTransform::getTimeBounds() const { max = std::max(max, track->getTime(size-1)); } -#if !defined(__clang__) return AABB1(min, max); -#else - // HACK Workaround for clang - AABB1 b; - b.min = min; - b.max = max; - return b; -#endif } AABB AnimatedTransform::getTranslationBounds() const { @@ -152,6 +135,53 @@ AnimatedTransform::~AnimatedTransform() { m_tracks[i]->decRef(); } +void AnimatedTransform::sortAndSimplify() { + bool isStatic = true; + + for (size_t i=0; igetType()) { + case AbstractAnimationTrack::ETranslationX: + case AbstractAnimationTrack::ETranslationY: + case AbstractAnimationTrack::ETranslationZ: + case AbstractAnimationTrack::ERotationX: + case AbstractAnimationTrack::ERotationY: + case AbstractAnimationTrack::ERotationZ: + case AbstractAnimationTrack::EScaleX: + case AbstractAnimationTrack::EScaleY: + case AbstractAnimationTrack::EScaleZ: + success = static_cast(track)->sortAndSimplify(); + break; + case AbstractAnimationTrack::ETranslationXYZ: + case AbstractAnimationTrack::EScaleXYZ: + success = static_cast(track)->sortAndSimplify(); + break; + case AbstractAnimationTrack::ERotationQuat: + success = static_cast(track)->sortAndSimplify(); + break; + default: + Log(EError, "Encountered an unsupported " + "animation track type: %i!", track->getType()); + } + if (success) { + isStatic &= track->getSize() == 1; + } else { + m_tracks.erase(m_tracks.begin() + i); + track->decRef(); + } + } + + if (isStatic) { + Transform temp; + temp = eval(0); + m_transform = temp; + for (size_t i=0; idecRef(); + m_tracks.clear(); + } +} + void AnimatedTransform::serialize(Stream *stream) const { stream->writeSize(m_tracks.size()); if (m_tracks.size() == 0) { diff --git a/src/mtsgui/SConscript b/src/mtsgui/SConscript index 19f0f37e..454e5f9b 100644 --- a/src/mtsgui/SConscript +++ b/src/mtsgui/SConscript @@ -1,4 +1,4 @@ -Import('env', 'os', 'glob', 'sys', 'hasQt', 'hasCollada', 'hasBreakpad', 'mainEnv', +Import('env', 'os', 'glob', 'sys', 'hasQt', 'hasCollada', 'hasBreakpad', 'mainEnv', 'resources', 'converter_objects') # For running Uic & Moc (below) @@ -59,7 +59,7 @@ if hasQt: qtEnv.Prepend(LIBPATH=env['COLLADALIBDIR']) if env.has_key('COLLADALIB'): qtEnv.Prepend(LIBS=env['COLLADALIB']) - + if sys.platform == 'darwin': mainEnv_osx = mainEnv.Clone() qtEnv_osx = qtEnv.Clone() diff --git a/src/shapes/cylinder.cpp b/src/shapes/cylinder.cpp index 13d91e6b..5aea8ec9 100644 --- a/src/shapes/cylinder.cpp +++ b/src/shapes/cylinder.cpp @@ -495,7 +495,7 @@ public: void getNormalDerivative(const Intersection &its, Vector &dndu, Vector &dndv, bool shadingFrame) const { - dndu = its.dpdu / (m_radius * m_flipNormals ? -1 : 1); + dndu = its.dpdu / (m_radius * (m_flipNormals ? -1 : 1)); dndv = Vector(0.0f); } diff --git a/src/tests/SConscript b/src/tests/SConscript index fc42deae..0dc60491 100644 --- a/src/tests/SConscript +++ b/src/tests/SConscript @@ -9,7 +9,7 @@ bidirEnv.Append(LIBPATH=['#src/libbidir']) for plugin in glob.glob(GetBuildPath('test_*.cpp')): name = os.path.basename(plugin) - if "bidir" in name: + if "bidir" in name: lib = bidirEnv.SharedLibrary(name[0:len(name)-4], name) else: lib = testEnv.SharedLibrary(name[0:len(name)-4], name) From 0c09791f473575bed26e0085745b02cd09d6e1c0 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Sat, 3 Nov 2012 01:52:19 -0400 Subject: [PATCH 03/18] motion blur support (sensors, emitters, and non-deforming objects for now) --- data/schema/scene.xsd | 4 +- doc/macros.sty | 2 +- include/mitsuba/core/properties.h | 11 ++ include/mitsuba/hw/vpl.h | 27 ++++- include/mitsuba/render/emitter.h | 2 +- include/mitsuba/render/scenehandler.h | 2 +- include/mitsuba/render/track.h | 41 +++++-- src/emitters/collimated.cpp | 2 +- src/emitters/directional.cpp | 2 +- src/emitters/point.cpp | 2 +- src/emitters/spot.cpp | 2 +- src/libcore/properties.cpp | 124 +++++++++++++++++-- src/libhw/vpl.cpp | 60 +++++++++- src/librender/emitter.cpp | 3 +- src/librender/scenehandler.cpp | 10 +- src/librender/track.cpp | 35 ++++-- src/librender/vpl.cpp | 7 +- src/mtsgui/save.cpp | 25 ++++ src/sensors/fluencemeter.cpp | 2 +- src/sensors/orthographic.cpp | 2 +- src/sensors/perspective.cpp | 4 +- src/sensors/radiancemeter.cpp | 2 +- src/sensors/spherical.cpp | 2 +- src/sensors/telecentric.cpp | 2 +- src/sensors/thinlens.cpp | 2 +- src/shapes/SConscript | 1 - src/shapes/animatedinstance.cpp | 164 -------------------------- src/shapes/instance.cpp | 70 ++++++----- src/shapes/instance.h | 6 +- src/shapes/shapegroup.cpp | 4 +- 30 files changed, 357 insertions(+), 265 deletions(-) delete mode 100644 src/shapes/animatedinstance.cpp diff --git a/data/schema/scene.xsd b/data/schema/scene.xsd index 18de916b..912259d1 100644 --- a/data/schema/scene.xsd +++ b/data/schema/scene.xsd @@ -43,7 +43,7 @@ - + @@ -326,7 +326,7 @@ - + diff --git a/doc/macros.sty b/doc/macros.sty index 6eae9806..854c02ed 100644 --- a/doc/macros.sty +++ b/doc/macros.sty @@ -31,7 +31,7 @@ \newcommand{\order}[1]{} % Ignore \newcommand{\Transform}{\texttt{transform}} -\newcommand{\Animation}{\texttt{animation}} +\newcommand{\ATransform}{\texttt{atransform}} \newcommand{\Spectrum}{\texttt{spectrum}} \newcommand{\Integer}{\texttt{integer}} \newcommand{\String}{\texttt{string}} diff --git a/include/mitsuba/core/properties.h b/include/mitsuba/core/properties.h index ab61a577..9e09a32a 100644 --- a/include/mitsuba/core/properties.h +++ b/include/mitsuba/core/properties.h @@ -59,6 +59,8 @@ public: EVector, /// 4x4 transform for homogeneous coordinates ETransform, + /// An animated 4x4 transformation + EAnimatedTransform, /// Discretized color spectrum ESpectrum, /// Arbitrary-length string @@ -144,6 +146,15 @@ public: /// Get a linear transformation (with default) Transform getTransform(const std::string &name, const Transform &defVal) const; + /// Set an animated linear transformation + void setAnimatedTransform(const std::string &name, const AnimatedTransform *value, bool warnDuplicates = true); + /// Get an animated linear transformation + ref getAnimatedTransform(const std::string &name) const; + /// Get an animated linear transformation (with default) + ref getAnimatedTransform(const std::string &name, const AnimatedTransform *defVal) const; + /// Get an animated linear transformation (with default) + ref getAnimatedTransform(const std::string &name, const Transform &defVal) const; + /// Set a spectral power distribution void setSpectrum(const std::string &name, const Spectrum &value, bool warnDuplicates = true); /// Get a spectral power distribution diff --git a/include/mitsuba/hw/vpl.h b/include/mitsuba/hw/vpl.h index f37307e2..7474bfff 100644 --- a/include/mitsuba/hw/vpl.h +++ b/include/mitsuba/hw/vpl.h @@ -326,11 +326,14 @@ protected: * number of GPU pipeline flushes. Draw transparent objects last. */ struct MaterialOrder { - inline bool operator()( - const Renderer::TransformedGPUGeometry &g1, - const Renderer::TransformedGPUGeometry &g2) const { - const Shader *shader1 = g1.first->getShader(); - const Shader *shader2 = g2.first->getShader(); + const std::vector &geo; + + MaterialOrder(const std::vector &geo) + : geo(geo) { } + + inline bool operator()(size_t idx1, size_t idx2) const { + const Shader *shader1 = geo[idx1].first->getShader(); + const Shader *shader2 = geo[idx2].first->getShader(); if (shader1 && (shader1->getFlags() & Shader::ETransparent)) shader1 = NULL; @@ -340,6 +343,19 @@ protected: return shader1 < shader2; } }; + + /// Helper data structure to keep track of shapes that are undergoing keyframe animations + struct AnimatedGeometryRecord { + const AnimatedTransform *trafo; + ssize_t geometryIndex; + ssize_t opaqueGeometryIndex; + + AnimatedGeometryRecord(const AnimatedTransform *trafo, + ssize_t geometryIndex, ssize_t opaqueGeometryIndex) : + trafo(trafo), geometryIndex(geometryIndex), + opaqueGeometryIndex(opaqueGeometryIndex) { } + }; + MTS_DECLARE_CLASS() private: ref m_renderer; @@ -348,6 +364,7 @@ private: /* On-GPU geometry references */ std::vector m_geometry; std::vector m_opaqueGeometry; + std::vector m_animatedGeometry; /* Shader & dependency management */ std::map m_configurations; diff --git a/include/mitsuba/render/emitter.h b/include/mitsuba/render/emitter.h index b5836b03..4e30be11 100644 --- a/include/mitsuba/render/emitter.h +++ b/include/mitsuba/render/emitter.h @@ -425,7 +425,7 @@ protected: /// Virtual destructor virtual ~AbstractEmitter(); protected: - ref m_worldTransform; + ref m_worldTransform; ref m_medium; Shape *m_shape; uint32_t m_type; diff --git a/include/mitsuba/render/scenehandler.h b/include/mitsuba/render/scenehandler.h index ed8cf018..19f2606b 100644 --- a/include/mitsuba/render/scenehandler.h +++ b/include/mitsuba/render/scenehandler.h @@ -155,7 +155,7 @@ private: EBoolean, EString, ETranslate, ERotate, ELookAt, EScale, EMatrix, EPoint, EVector, ERGB, ESRGB, EBlackBody, - ESpectrum, ETransform, EAnimation, + ESpectrum, ETransform, EATransform, EInclude, EAlias }; diff --git a/include/mitsuba/render/track.h b/include/mitsuba/render/track.h index 8b3a9523..bd6c6642 100644 --- a/include/mitsuba/render/track.h +++ b/include/mitsuba/render/track.h @@ -22,6 +22,7 @@ #include #include +#include MTS_NAMESPACE_BEGIN @@ -144,10 +145,10 @@ private: } }; - struct MatchPredicate { + struct UniqueTimePredicate { inline bool operator()(const std::pair &p1, const std::pair &p2) const { - return p1.first == p2.first || p1.second == p2.second; + return p1.first == p2.first; } }; @@ -156,23 +157,42 @@ public: * \brief Sort all animation tracks and remove * unnecessary data (for user-provided input) * - * \return \c false if this animation track was deemed to be unnecessary + * \return \c false if this animation track was deemed to be "trivial" * after the cleanup (for instance, it only contains (0,0,0) translation operations) */ bool sortAndSimplify() { SAssert(m_values.size() == m_times.size()); + if (m_values.size() == 0) + return false; + std::vector< std::pair > temp(m_values.size()); for (size_t i=0; i 0 || !isNoOp(m_values[0]); + return !(m_values.size() == 0 || (m_values.size() == 1 && isNoOp(m_values[0]))); } protected: /// Evaluate the animation track using linear interpolation @@ -287,6 +307,9 @@ public: /// Look up one of the tracks by index inline const AbstractAnimationTrack *getTrack(size_t idx) const { return m_tracks[idx]; } + /// Return the used keyframes as a set + void collectKeyframes(std::set &result) const; + /// Append an animation track void addTrack(AbstractAnimationTrack *track); diff --git a/src/emitters/collimated.cpp b/src/emitters/collimated.cpp index bc55ad33..1ba51fdb 100644 --- a/src/emitters/collimated.cpp +++ b/src/emitters/collimated.cpp @@ -26,7 +26,7 @@ MTS_NAMESPACE_BEGIN * \icon{emitter_collimated} * \order{5} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional emitter-to-world transformation. * \default{none (i.e. emitter space $=$ world space)} * } diff --git a/src/emitters/directional.cpp b/src/emitters/directional.cpp index 25ea9bbb..834857e0 100644 --- a/src/emitters/directional.cpp +++ b/src/emitters/directional.cpp @@ -25,7 +25,7 @@ MTS_NAMESPACE_BEGIN * \icon{emitter_directional} * \order{4} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional emitter-to-world transformation. * \default{none (i.e. emitter space $=$ world space)} * } diff --git a/src/emitters/point.cpp b/src/emitters/point.cpp index 5741dbf7..7edc7d73 100644 --- a/src/emitters/point.cpp +++ b/src/emitters/point.cpp @@ -28,7 +28,7 @@ MTS_NAMESPACE_BEGIN * \icon{emitter_point} * \order{1} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional sensor-to-world transformation. * \default{none (i.e. sensor space $=$ world space)} * } diff --git a/src/emitters/spot.cpp b/src/emitters/spot.cpp index 4acb24c6..acbcac86 100644 --- a/src/emitters/spot.cpp +++ b/src/emitters/spot.cpp @@ -25,7 +25,7 @@ MTS_NAMESPACE_BEGIN * \icon{emitter_spot} * \order{3} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional sensor-to-world transformation. * \default{none (i.e. sensor space $=$ world space)} * } diff --git a/src/libcore/properties.cpp b/src/libcore/properties.cpp index da93cf3c..f9b0dc58 100644 --- a/src/libcore/properties.cpp +++ b/src/libcore/properties.cpp @@ -18,6 +18,7 @@ #include #include +#include /* Keep the boost::variant includes outside of properties.h, since they noticeably add to the overall compile times */ @@ -26,7 +27,7 @@ MTS_NAMESPACE_BEGIN typedef boost::variant< - bool, int64_t, Float, Point, Vector, Transform, + bool, int64_t, Float, Point, Vector, Transform, AnimatedTransform *, Spectrum, std::string, Properties::Data> ElementData; struct PropertyElement { @@ -78,17 +79,87 @@ DEFINE_PROPERTY_ACCESSOR(Spectrum, Spectrum, Spectrum, spectrum) DEFINE_PROPERTY_ACCESSOR(std::string, std::string, String, string) DEFINE_PROPERTY_ACCESSOR(Properties::Data, Properties::Data, Data, data) +void Properties::setAnimatedTransform(const std::string &name, const AnimatedTransform *value, bool warnDuplicates) { + if (hasProperty(name)) { + AnimatedTransform **old = boost::get(&((*m_elements)[name].data)); + if (old) + (*old)->decRef(); + if (warnDuplicates) + SLog(EWarn, "Property \"%s\" was specified multiple times!", name.c_str()); + } + (*m_elements)[name].data = (AnimatedTransform *) value; + (*m_elements)[name].queried = false; + value->incRef(); +} + +ref Properties::getAnimatedTransform(const std::string &name) const { + std::map::const_iterator it = m_elements->find(name); + if (it == m_elements->end()) + SLog(EError, "Property \"%s\" missing", name.c_str()); + const AnimatedTransform * const * result1 = boost::get(&it->second.data); + const Transform *result2 = boost::get(&it->second.data); + + if (!result1 && !result2) + SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " + "complete property record is :\n%s", name.c_str(), toString().c_str()); + it->second.queried = true; + + if (result1) + return *result1; + else + return new AnimatedTransform(*result2); +} + +ref Properties::getAnimatedTransform(const std::string &name, const AnimatedTransform *defVal) const { + std::map::const_iterator it = m_elements->find(name); + if (it == m_elements->end()) + return defVal; + AnimatedTransform * const * result1 = boost::get(&it->second.data); + const Transform *result2 = boost::get(&it->second.data); + + if (!result1 && !result2) + SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " + "complete property record is :\n%s", name.c_str(), toString().c_str()); + + it->second.queried = true; + + if (result1) + return *result1; + else + return new AnimatedTransform(*result2); +} + +ref Properties::getAnimatedTransform(const std::string &name, const Transform &defVal) const { + std::map::const_iterator it = m_elements->find(name); + if (it == m_elements->end()) + return new AnimatedTransform(defVal); + + AnimatedTransform * const * result1 = boost::get(&it->second.data); + const Transform *result2 = boost::get(&it->second.data); + + if (!result1 && !result2) + SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " + "complete property record is :\n%s", name.c_str(), toString().c_str()); + it->second.queried = true; + + if (result1) + return *result1; + else + return new AnimatedTransform(*result2); +} + class type_visitor : public boost::static_visitor { public: - Properties::EPropertyType operator()(const bool &) const { return Properties::EBoolean; } - Properties::EPropertyType operator()(const int64_t &) const { return Properties::EInteger; } - Properties::EPropertyType operator()(const Float &) const { return Properties::EFloat; } - Properties::EPropertyType operator()(const Point &) const { return Properties::EPoint; } - Properties::EPropertyType operator()(const Vector &) const { return Properties::EVector; } - Properties::EPropertyType operator()(const Transform &) const { return Properties::ETransform; } - Properties::EPropertyType operator()(const Spectrum &) const { return Properties::ESpectrum; } - Properties::EPropertyType operator()(const std::string &) const { return Properties::EString; } - Properties::EPropertyType operator()(const Properties::Data &) const { return Properties::EData; } + Properties::EPropertyType operator()(const bool &) const { return Properties::EBoolean; } + Properties::EPropertyType operator()(const int64_t &) const { return Properties::EInteger; } + Properties::EPropertyType operator()(const Float &) const { return Properties::EFloat; } + Properties::EPropertyType operator()(const Point &) const { return Properties::EPoint; } + Properties::EPropertyType operator()(const Vector &) const { return Properties::EVector; } + Properties::EPropertyType operator()(const Transform &) const { return Properties::ETransform; } + Properties::EPropertyType operator()(const AnimatedTransform *) const { return Properties::EAnimatedTransform; } + Properties::EPropertyType operator()(const Spectrum &) const { return Properties::ESpectrum; } + Properties::EPropertyType operator()(const std::string &) const { return Properties::EString; } + Properties::EPropertyType operator()(const Properties::Data &) const { return Properties::EData; } }; Properties::Properties() @@ -104,16 +175,44 @@ Properties::Properties(const std::string &pluginName) Properties::Properties(const Properties &props) : m_pluginName(props.m_pluginName), m_id(props.m_id) { m_elements = new std::map(*props.m_elements); + + for (std::map::iterator it = m_elements->begin(); + it != m_elements->end(); ++it) { + AnimatedTransform **trafo = boost::get(&(*it).second.data); + if (trafo) + (*trafo)->incRef(); + } } Properties::~Properties() { + for (std::map::iterator it = m_elements->begin(); + it != m_elements->end(); ++it) { + AnimatedTransform **trafo = boost::get(&(*it).second.data); + if (trafo) + (*trafo)->decRef(); + } + delete m_elements; } void Properties::operator=(const Properties &props) { + for (std::map::iterator it = m_elements->begin(); + it != m_elements->end(); ++it) { + AnimatedTransform *trafo = boost::get((*it).second.data); + if (trafo) + trafo->decRef(); + } + m_pluginName = props.m_pluginName; m_id = props.m_id; *m_elements = *props.m_elements; + + for (std::map::iterator it = m_elements->begin(); + it != m_elements->end(); ++it) { + AnimatedTransform *trafo = boost::get((*it).second.data); + if (trafo) + trafo->incRef(); + } } bool Properties::hasProperty(const std::string &name) const { @@ -175,7 +274,10 @@ std::string Properties::toString() const { oss << boost::get(data).toString(); break; case ETransform: - oss << indent(boost::get(data).toString()); + oss << indent(boost::get(data).toString(), 2); + break; + case EAnimatedTransform: + oss << indent(boost::get(data)->toString(), 2); break; case ESpectrum: oss << boost::get(data).toString(); diff --git a/src/libhw/vpl.cpp b/src/libhw/vpl.cpp index 79cd24e4..877d7715 100644 --- a/src/libhw/vpl.cpp +++ b/src/libhw/vpl.cpp @@ -146,6 +146,7 @@ void VPLShaderManager::setScene(const Scene *scene) { m_geometry.reserve(shapes.size()); m_opaqueGeometry.clear(); m_opaqueGeometry.reserve(shapes.size()); + m_animatedGeometry.clear(); Matrix4x4 identityTrafo; identityTrafo.setIdentity(); @@ -158,7 +159,8 @@ void VPLShaderManager::setScene(const Scene *scene) { const Instance *instance = static_cast(shape); const std::vector &instantiatedShapes = instance->getShapeGroup()->getKDTree()->getShapes(); - const Matrix4x4 &trafo = instance->getWorldTransform().getMatrix(); + const AnimatedTransform *atrafo = instance->getWorldTransform(); + const Matrix4x4 &trafo = atrafo->eval(0).getMatrix(); for (size_t j=0; jsetShader(shader); + ssize_t geometryIndex = (ssize_t) m_geometry.size(), opaqueGeometryIndex = -1; m_geometry.push_back(std::make_pair(gpuGeo, trafo)); - if (shader && !(shader->getFlags() & Shader::ETransparent)) + if (shader && !(shader->getFlags() & Shader::ETransparent)) { + opaqueGeometryIndex = (ssize_t) m_opaqueGeometry.size(); m_opaqueGeometry.push_back(std::make_pair(gpuGeo, trafo)); + } + + if (!atrafo->isStatic()) { + m_animatedGeometry.push_back(AnimatedGeometryRecord(atrafo, + geometryIndex, opaqueGeometryIndex)); + } } } else { GPUGeometry *gpuGeo = m_renderer->registerGeometry(shape); @@ -233,8 +243,40 @@ void VPLShaderManager::setScene(const Scene *scene) { m_backgroundParam_emitterScale = prog->getParameterID("emitterScale", false); } + std::vector geometryPermutation(m_geometry.size()), + opaqueGeometryPermutation(m_opaqueGeometry.size()); + + for (size_t i=0; i geometryPermutationInv(m_geometry.size()), + opaqueGeometryPermutationInv(m_opaqueGeometry.size()); + + for (size_t i=0; i= 0) + agRec.geometryIndex = geometryPermutationInv[agRec.geometryIndex]; + if (agRec.opaqueGeometryIndex >= 0) + agRec.opaqueGeometryIndex = opaqueGeometryPermutationInv[agRec.opaqueGeometryIndex]; + } + } + + permute_inplace(&m_geometry[0], geometryPermutation); + permute_inplace(&m_opaqueGeometry[0], opaqueGeometryPermutation); } void VPLShaderManager::setVPL(const VPL &vpl) { @@ -244,6 +286,18 @@ void VPLShaderManager::setVPL(const VPL &vpl) { m_nearClip = std::numeric_limits::infinity(); m_farClip = -std::numeric_limits::infinity(); + /* Update animations */ + for (size_t i=0; ieval(vpl.its.time).getMatrix(); + + if (agRec.geometryIndex >= 0) + m_geometry[agRec.geometryIndex].second = matrix; + + if (agRec.opaqueGeometryIndex >= 0) + m_opaqueGeometry[agRec.opaqueGeometryIndex].second = matrix; + } + if (vpl.type != EDirectionalEmitterVPL) { /* Trace a few rays from the VPL to estimate a suitable depth range */ for (size_t i=0; i translation = new VectorTrack(VectorTrack::ETranslationXYZ); ref rotation = new QuatTrack(VectorTrack::ERotationQuat); @@ -591,10 +591,10 @@ void SceneHandler::endElement(const XMLCh* const xmlName) { } break; - case EAnimation: { + case EATransform: { m_animatedTransform->sortAndSimplify(); -// context.parent->properties.setAnimatedTransform( -// context.attributes["name"], m_animatedTransform);//XXX + context.parent->properties.setAnimatedTransform( + context.attributes["name"], m_animatedTransform); m_animatedTransform = NULL; } break; diff --git a/src/librender/track.cpp b/src/librender/track.cpp index ea94b217..fd4ee034 100644 --- a/src/librender/track.cpp +++ b/src/librender/track.cpp @@ -50,7 +50,7 @@ AABB1 AnimatedTransform::getTimeBounds() const { if (m_tracks.size() == 0) return AABB1(0.0f, 0.0f); - Float min = std::numeric_limits::infinity(); + Float min = std::numeric_limits::infinity(); Float max = -std::numeric_limits::infinity(); for (size_t i=0; igetType()) { case AbstractAnimationTrack::ETranslationX: case AbstractAnimationTrack::ETranslationY: @@ -151,24 +151,25 @@ void AnimatedTransform::sortAndSimplify() { case AbstractAnimationTrack::EScaleX: case AbstractAnimationTrack::EScaleY: case AbstractAnimationTrack::EScaleZ: - success = static_cast(track)->sortAndSimplify(); + isNeeded = static_cast(track)->sortAndSimplify(); break; case AbstractAnimationTrack::ETranslationXYZ: case AbstractAnimationTrack::EScaleXYZ: - success = static_cast(track)->sortAndSimplify(); + isNeeded = static_cast(track)->sortAndSimplify(); break; case AbstractAnimationTrack::ERotationQuat: - success = static_cast(track)->sortAndSimplify(); + isNeeded = static_cast(track)->sortAndSimplify(); break; default: Log(EError, "Encountered an unsupported " "animation track type: %i!", track->getType()); } - if (success) { + if (isNeeded) { isStatic &= track->getSize() == 1; } else { m_tracks.erase(m_tracks.begin() + i); track->decRef(); + --i; } } @@ -182,6 +183,18 @@ void AnimatedTransform::sortAndSimplify() { } } +void AnimatedTransform::collectKeyframes(std::set &result) const { + for (size_t i=0; igetSize(); ++j) + result.insert(track->getTime(j)); + } + + if (result.size() == 0) + result.insert(0); +} + void AnimatedTransform::serialize(Stream *stream) const { stream->writeSize(m_tracks.size()); if (m_tracks.size() == 0) { @@ -233,9 +246,13 @@ void AnimatedTransform::TransformFunctor::operator()(const Float &t, Transform & } } - trafo = Transform::translate(translation) * - rotation.toTransform() * - Transform::scale(scale); + trafo = Transform::translate(translation); + + if (!rotation.isIdentity()) + trafo = trafo * rotation.toTransform(); + + if (scale != Vector(0.0f)) + trafo = trafo * Transform::scale(scale); } std::string AnimatedTransform::toString() const { diff --git a/src/librender/vpl.cpp b/src/librender/vpl.cpp index def62936..e23dadd6 100644 --- a/src/librender/vpl.cpp +++ b/src/librender/vpl.cpp @@ -30,7 +30,7 @@ static void appendVPL(const Scene *scene, Random *random, const Sensor *sensor = scene->getSensor(); Float time = sensor->getShutterOpen() - + 0.5f * sensor->getShutterOpenTime(); + + sensor->getShutterOpenTime() * random->nextFloat(); if (prune) { /* Possibly reject VPLs if they are unlikely to be @@ -86,11 +86,12 @@ size_t generateVPLs(const Scene *scene, Random *random, sampler = static_cast (PluginManager::getInstance()-> createObject(MTS_CLASS(Sampler), props)); sampler->configure(); + sampler->generate(Point2i(0)); } const Sensor *sensor = scene->getSensor(); Float time = sensor->getShutterOpen() - + 0.5f * sensor->getShutterOpenTime(); + + sensor->getShutterOpenTime() * sampler->next1D(); const Frame stdFrame(Vector(1,0,0), Vector(0,1,0), Vector(0,0,1)); @@ -110,6 +111,7 @@ size_t generateVPLs(const Scene *scene, Random *random, if (!emitter->isEnvironmentEmitter() && emitter->needsDirectionSample()) { VPL lumVPL(EPointEmitterVPL, weight); lumVPL.its.p = pRec.p; + lumVPL.its.time = time; lumVPL.its.shFrame = pRec.n.isZero() ? stdFrame : Frame(pRec.n); lumVPL.emitter = emitter; appendVPL(scene, random, lumVPL, prune, vpls); @@ -128,6 +130,7 @@ size_t generateVPLs(const Scene *scene, Random *random, VPL lumVPL(EDirectionalEmitterVPL, weight2); lumVPL.its.p = Point(0.0); + lumVPL.its.time = time; lumVPL.its.shFrame = Frame(-diRec.d); lumVPL.emitter = emitter; appendVPL(scene, random, lumVPL, false, vpls); diff --git a/src/mtsgui/save.cpp b/src/mtsgui/save.cpp index ae8a35a7..3be9f008 100644 --- a/src/mtsgui/save.cpp +++ b/src/mtsgui/save.cpp @@ -78,6 +78,31 @@ static void setProperties(QDomDocument &doc, QDomElement &element, property = doc.createElement("string"); property.setAttribute("value", props.getString(*it).c_str()); break; + case Properties::EAnimatedTransform: { + const AnimatedTransform *trafo = props.getAnimatedTransform(*it); + + std::set times; + trafo->collectKeyframes(times); + + property = doc.createElement("animation"); + + for (std::set::iterator it2 = times.begin(); it2 != times.end(); ++it2) { + const Matrix4x4 &matrix = trafo->eval(*it2).getMatrix(); + QDomElement trafoTag = doc.createElement("transform"); + QDomElement matrixTag = doc.createElement("matrix"); + + QString value; + for (int i=0; i<4; ++i) + for (int j=0; j<4; ++j) + value += QString("%1 ").arg(matrix(i, j)); + + matrixTag.setAttribute("value", value); + trafoTag.setAttribute("time", *it2); + trafoTag.appendChild(matrixTag); + property.appendChild(trafoTag); + } + } + break; case Properties::ETransform: { /* Captures the subset of transformations that are used by Mitsuba's perspective and orthographic camera classes */ diff --git a/src/sensors/fluencemeter.cpp b/src/sensors/fluencemeter.cpp index 53c87e18..cf0dca9e 100644 --- a/src/sensors/fluencemeter.cpp +++ b/src/sensors/fluencemeter.cpp @@ -26,7 +26,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{fluencemeter}{Fluence meter} * \order{7} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional sensor-to-world transformation. * \default{none (i.e. sensor space $=$ world space)} * } diff --git a/src/sensors/orthographic.cpp b/src/sensors/orthographic.cpp index 37ea76d4..8e885bc7 100644 --- a/src/sensors/orthographic.cpp +++ b/src/sensors/orthographic.cpp @@ -27,7 +27,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{orthographic}{Orthographic camera} * \order{3} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional camera-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/sensors/perspective.cpp b/src/sensors/perspective.cpp index 6a521467..9e09290b 100644 --- a/src/sensors/perspective.cpp +++ b/src/sensors/perspective.cpp @@ -26,7 +26,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{perspective}{Perspective pinhole camera} * \order{1} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional camera-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } @@ -113,7 +113,7 @@ public: foreshortening terms caused by the aperture, hence the flag "EOnSurface" */ m_type |= EDeltaPosition | EPerspectiveCamera | EOnSurface | EDirectionSampleMapsToPixels; - if (props.getTransform("toWorld", Transform()).hasScale()) + if (props.getAnimatedTransform("toWorld", Transform())->eval(0).hasScale()) Log(EError, "Scale factors in the camera-to-world " "transformation are not allowed!"); } diff --git a/src/sensors/radiancemeter.cpp b/src/sensors/radiancemeter.cpp index 758b9d7c..73c94644 100644 --- a/src/sensors/radiancemeter.cpp +++ b/src/sensors/radiancemeter.cpp @@ -25,7 +25,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{radiancemeter}{Radiance meter} * \order{6} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional sensor-to-world transformation. * \default{none (i.e. sensor space $=$ world space)} * } diff --git a/src/sensors/spherical.cpp b/src/sensors/spherical.cpp index 4ef108a4..65c19717 100644 --- a/src/sensors/spherical.cpp +++ b/src/sensors/spherical.cpp @@ -25,7 +25,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{spherical}{Spherical camera} * \order{5} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional camera-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/sensors/telecentric.cpp b/src/sensors/telecentric.cpp index 96f06fe3..77441d78 100644 --- a/src/sensors/telecentric.cpp +++ b/src/sensors/telecentric.cpp @@ -27,7 +27,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{telecentric}{Telecentric lens camera} * \order{4} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional sensor-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/sensors/thinlens.cpp b/src/sensors/thinlens.cpp index 0107915f..c81c2cea 100644 --- a/src/sensors/thinlens.cpp +++ b/src/sensors/thinlens.cpp @@ -29,7 +29,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{thinlens}{Perspective camera with a thin lens} * \order{2} * \parameters{ - * \parameter{toWorld}{\Transform\Or\Animation}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional camera-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/shapes/SConscript b/src/shapes/SConscript index 2561dc83..130f7dc7 100644 --- a/src/shapes/SConscript +++ b/src/shapes/SConscript @@ -11,7 +11,6 @@ plugins += env.SharedLibrary('cylinder', ['cylinder.cpp']) plugins += env.SharedLibrary('hair', ['hair.cpp']) plugins += env.SharedLibrary('shapegroup', ['shapegroup.cpp']) plugins += env.SharedLibrary('instance', ['instance.cpp']) -plugins += env.SharedLibrary('animatedinstance', ['animatedinstance.cpp']) plugins += env.SharedLibrary('pointcache', ['pointcache.cpp']) Export('plugins') diff --git a/src/shapes/animatedinstance.cpp b/src/shapes/animatedinstance.cpp deleted file mode 100644 index aa288645..00000000 --- a/src/shapes/animatedinstance.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/* - This file is part of Mitsuba, a physically based rendering system. - - Copyright (c) 2007-2012 by Wenzel Jakob and others. - - Mitsuba is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License Version 3 - as published by the Free Software Foundation. - - Mitsuba is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include -#include "shapegroup.h" - -MTS_NAMESPACE_BEGIN - -/*!\plugin{animatedinstance}{Animated geometry instance} - * \order{10} - * \parameters{ - * \parameter{filename}{\String}{Filename of an animated - * transformation} - * \parameter{\Unnamed}{\ShapeGroup}{A reference to a - * shape group that should be instantiated} - * } - * - * This plugin implements an \emph{animated} geometry instance, - * i.e. one or more shapes that are undergoing \emph{ridgid} - * transformations over time. - * - * The input file should contain a binary / serialized - * \code{AnimatedTransform} data structure -- for details, - * please refer to the C++ implementation of this class. - */ -class AnimatedInstance : public Shape { -public: - AnimatedInstance(const Properties &props) : Shape(props) { - FileResolver *fResolver = Thread::getThread()->getFileResolver(); - fs::path path = fResolver->resolve(props.getString("filename")); - m_name = path.filename().string(); - - Log(EInfo, "Loading animation track from \"%s\"", m_name.c_str()); - ref fs = new FileStream(path, FileStream::EReadOnly); - m_transform = new AnimatedTransform(fs); - } - - AnimatedInstance(Stream *stream, InstanceManager *manager) - : Shape(stream, manager) { - m_shapeGroup = static_cast(manager->getInstance(stream)); - m_transform = new AnimatedTransform(stream); - configure(); - } - - void serialize(Stream *stream, InstanceManager *manager) const { - Shape::serialize(stream, manager); - manager->serialize(stream, m_shapeGroup.get()); - m_transform->serialize(stream); - } - - void configure() { - if (!m_shapeGroup) - Log(EError, "A reference to a 'shapegroup' must be specified!"); - const ShapeKDTree *kdtree = m_shapeGroup->getKDTree(); - m_aabb = m_transform->getSpatialBounds(kdtree->getAABB()); - } - - AABB getAABB() const { - return m_aabb; - } - - std::string getName() const { - return m_name; - } - - Float getSurfaceArea() const { - Log(EError, "AnimatedInstance::getSurfaceArea(): not supported!"); - return 0.0f; - } - - void addChild(const std::string &name, ConfigurableObject *child) { - const Class *cClass = child->getClass(); - if (cClass->getName() == "ShapeGroup") { - m_shapeGroup = static_cast(child); - } else { - Shape::addChild(name, child); - } - } - - bool rayIntersect(const Ray &_ray, Float mint, - Float maxt, Float &t, void *temp) const { - const ShapeKDTree *kdtree = m_shapeGroup->getKDTree(); - Ray ray; - const Transform &objectToWorld = m_transform->eval(_ray.time); - Transform worldToObject = objectToWorld.inverse(); - worldToObject.transformAffine(_ray, ray); - return kdtree->rayIntersect(ray, mint, maxt, t, temp); - } - - bool rayIntersect(const Ray &_ray, Float mint, Float maxt) const { - const ShapeKDTree *kdtree = m_shapeGroup->getKDTree(); - Ray ray; - const Transform &objectToWorld = m_transform->eval(_ray.time); - Transform worldToObject = objectToWorld.inverse(); - worldToObject.transformAffine(_ray, ray); - return kdtree->rayIntersect(ray, mint, maxt); - } - - void fillIntersectionRecord(const Ray &_ray, - const void *temp, Intersection &its) const { - const ShapeKDTree *kdtree = m_shapeGroup->getKDTree(); - const Transform &objectToWorld = m_transform->eval(_ray.time); - - Ray ray; - objectToWorld.inverse()(_ray, ray); - kdtree->fillIntersectionRecord(ray, temp, its); - - its.shFrame.n = normalize(objectToWorld(its.shFrame.n)); - its.shFrame.s = normalize(objectToWorld(its.shFrame.s)); - its.shFrame.t = normalize(objectToWorld(its.shFrame.t)); - its.geoFrame = Frame(normalize(objectToWorld(its.geoFrame.n))); - its.dpdu = objectToWorld(its.dpdu); - its.dpdv = objectToWorld(its.dpdv); - its.wi = normalize(its.shFrame.toLocal(-_ray.d)); - its.instance = this; - } - - void getNormalDerivative(const Intersection &its, - Vector &dndu, Vector &dndv, bool shadingFrame) const { - const Transform &objectToWorld = m_transform->eval(its.time); - its.shape->getNormalDerivative(its, dndu, dndv, shadingFrame); - - /* The following will probably be incorrect for - non-rigid transformations */ - dndu = objectToWorld(dndu); - dndv = objectToWorld(dndv); - } - - size_t getPrimitiveCount() const { - return 0; - } - - size_t getEffectivePrimitiveCount() const { - return m_shapeGroup->getPrimitiveCount(); - } - - MTS_DECLARE_CLASS() -private: - ref m_shapeGroup; - ref m_transform; - AABB m_aabb; - std::string m_name; -}; - -MTS_IMPLEMENT_CLASS_S(AnimatedInstance, false, Shape) -MTS_EXPORT_PLUGIN(AnimatedInstance, "Animated instanced geometry"); -MTS_NAMESPACE_END diff --git a/src/shapes/instance.cpp b/src/shapes/instance.cpp index 1b1d56cf..32f81525 100644 --- a/src/shapes/instance.cpp +++ b/src/shapes/instance.cpp @@ -25,7 +25,7 @@ MTS_NAMESPACE_BEGIN * \parameters{ * \parameter{\Unnamed}{\ShapeGroup}{A reference to a * shape group that should be instantiated} - * \parameter{toWorld}{\Transform}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional linear instance-to-world transformation. * \default{none (i.e. instance space $=$ world space)} * } @@ -37,21 +37,19 @@ MTS_NAMESPACE_BEGIN */ Instance::Instance(const Properties &props) : Shape(props) { - m_objectToWorld = props.getTransform("toWorld", Transform()); - m_worldToObject = m_objectToWorld.inverse(); + m_transform = props.getAnimatedTransform("toWorld", Transform()); } Instance::Instance(Stream *stream, InstanceManager *manager) : Shape(stream, manager) { m_shapeGroup = static_cast(manager->getInstance(stream)); - m_objectToWorld = Transform(stream); - m_worldToObject = m_objectToWorld.inverse(); + m_transform = new AnimatedTransform(stream); } void Instance::serialize(Stream *stream, InstanceManager *manager) const { Shape::serialize(stream, manager); manager->serialize(stream, m_shapeGroup.get()); - m_objectToWorld.serialize(stream); + m_transform->serialize(stream); } void Instance::configure() { @@ -64,15 +62,19 @@ AABB Instance::getAABB() const { const AABB &aabb = kdtree->getAABB(); if (!aabb.isValid()) // the geometry group is empty return aabb; - AABB result; - for (int i=0; i<8; ++i) - result.expandBy(m_objectToWorld(aabb.getCorner(i))); - return result; -} -Float Instance::getSurfaceArea() const { - Log(EError, "Instance::getSurfaceArea(): not supported!"); - return 0.0f; + std::set times; + m_transform->collectKeyframes(times); + + AABB result; + for (std::set::iterator it = times.begin(); it != times.end(); ++it) { + const Transform &trafo = m_transform->eval(*it); + + for (int i=0; i<8; ++i) + result.expandBy(trafo(aabb.getCorner(i))); + } + + return result; } void Instance::addChild(const std::string &name, ConfigurableObject *child) { @@ -95,55 +97,61 @@ size_t Instance::getEffectivePrimitiveCount() const { bool Instance::rayIntersect(const Ray &_ray, Float mint, Float maxt, Float &t, void *temp) const { const ShapeKDTree *kdtree = m_shapeGroup->getKDTree(); + const Transform &trafo = m_transform->eval(_ray.time); Ray ray; - m_worldToObject(_ray, ray); + trafo.inverse()(_ray, ray); return kdtree->rayIntersect(ray, mint, maxt, t, temp); } bool Instance::rayIntersect(const Ray &_ray, Float mint, Float maxt) const { const ShapeKDTree *kdtree = m_shapeGroup->getKDTree(); Ray ray; - m_worldToObject(_ray, ray); + const Transform &trafo = m_transform->eval(_ray.time); + trafo.inverse()(_ray, ray); return kdtree->rayIntersect(ray, mint, maxt); } void Instance::fillIntersectionRecord(const Ray &_ray, const void *temp, Intersection &its) const { const ShapeKDTree *kdtree = m_shapeGroup->getKDTree(); + const Transform &trafo = m_transform->eval(_ray.time); Ray ray; - m_worldToObject(_ray, ray); + trafo.inverse()(_ray, ray); kdtree->fillIntersectionRecord(ray, temp, its); - its.shFrame.n = normalize(m_objectToWorld(its.shFrame.n)); - its.shFrame.s = normalize(m_objectToWorld(its.shFrame.s)); - its.shFrame.t = normalize(m_objectToWorld(its.shFrame.t)); - its.geoFrame = Frame(normalize(m_objectToWorld(its.geoFrame.n))); - its.dpdu = m_objectToWorld(its.dpdu); - its.dpdv = m_objectToWorld(its.dpdv); - its.p = m_objectToWorld(its.p); + its.shFrame.n = normalize(trafo(its.shFrame.n)); + its.shFrame.s = normalize(trafo(its.shFrame.s)); + its.shFrame.t = normalize(trafo(its.shFrame.t)); + its.geoFrame = Frame(normalize(trafo(its.geoFrame.n))); + its.dpdu = trafo(its.dpdu); + its.dpdv = trafo(its.dpdv); + its.p = trafo(its.p); its.wi = normalize(its.shFrame.toLocal(-_ray.d)); its.instance = this; } void Instance::getNormalDerivative(const Intersection &its, Vector &dndu, Vector &dndv, bool shadingFrame) const { + const Transform &trafo = m_transform->eval(its.time); + const Transform invTrafo = trafo.inverse(); + /* The following is really super-inefficient, but it's needed to be able to deal with general transformations */ Intersection temp(its); - temp.p = m_worldToObject(its.p); - temp.dpdu = m_worldToObject(its.dpdu); - temp.dpdv = m_worldToObject(its.dpdv); + temp.p = invTrafo(its.p); + temp.dpdu = invTrafo(its.dpdu); + temp.dpdv = invTrafo(its.dpdv); /* Determine the length of the transformed normal *before* it was re-normalized */ - Normal tn = m_objectToWorld(normalize(m_worldToObject(its.shFrame.n))); - Float invLen = 1/tn.length(); + Normal tn = trafo(normalize(invTrafo(its.shFrame.n))); + Float invLen = 1 / tn.length(); tn *= invLen; its.shape->getNormalDerivative(temp, dndu, dndv, shadingFrame); - dndu = m_objectToWorld(Normal(dndu)) * invLen; - dndv = m_objectToWorld(Normal(dndv)) * invLen; + dndu = trafo(Normal(dndu)) * invLen; + dndv = trafo(Normal(dndv)) * invLen; dndu -= tn * dot(tn, dndu); dndv -= tn * dot(tn, dndv); diff --git a/src/shapes/instance.h b/src/shapes/instance.h index 3b013811..24f096ed 100644 --- a/src/shapes/instance.h +++ b/src/shapes/instance.h @@ -40,7 +40,7 @@ public: void configure(); /// Return the object-to-world transformation used by this instance - inline Transform getWorldTransform() const { return m_objectToWorld; } + inline const AnimatedTransform *getWorldTransform() const { return m_transform.get(); } /// Add a child ConfigurableObject void addChild(const std::string &name, ConfigurableObject *child); @@ -57,8 +57,6 @@ public: AABB getAABB() const; - Float getSurfaceArea() const; - bool rayIntersect(const Ray &_ray, Float mint, Float maxt, Float &t, void *temp) const; @@ -80,7 +78,7 @@ public: MTS_DECLARE_CLASS() private: ref m_shapeGroup; - Transform m_objectToWorld, m_worldToObject; + ref m_transform; }; MTS_NAMESPACE_END diff --git a/src/shapes/shapegroup.cpp b/src/shapes/shapegroup.cpp index db42100e..c9e60c73 100644 --- a/src/shapes/shapegroup.cpp +++ b/src/shapes/shapegroup.cpp @@ -120,8 +120,8 @@ Float ShapeGroup::getSurfaceArea() const { void ShapeGroup::addChild(const std::string &name, ConfigurableObject *child) { const Class *cClass = child->getClass(); - if (cClass->derivesFrom(MTS_CLASS(ShapeGroup)) || cClass->getName() == "ShapeInstance") { - Log(EError, "Nested instancing is not supported!"); + if (cClass->derivesFrom(MTS_CLASS(ShapeGroup)) || cClass->getName() == "Instance") { + Log(EError, "Nested instancing is not permitted"); } else if (cClass->derivesFrom(MTS_CLASS(Shape))) { Shape *shape = static_cast(child); if (shape->isEmitter()) From 3881f295d8bcd17c6d44e7e18091d9cc5f96e1a1 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Sat, 3 Nov 2012 02:46:32 -0400 Subject: [PATCH 04/18] added a convenience wrapper to permit direct animation of every type of shape without having to declare instances etc --- src/emitters/sky.cpp | 7 ++-- src/emitters/sun.cpp | 3 +- src/emitters/sunsky.cpp | 2 +- src/libcore/properties.cpp | 11 ++++--- src/librender/scenehandler.cpp | 58 ++++++++++++++++++++++++++++++---- src/shapes/cylinder.cpp | 2 +- src/shapes/disk.cpp | 2 +- src/shapes/obj.cpp | 2 +- src/shapes/ply.cpp | 2 +- src/shapes/rectangle.cpp | 2 +- src/shapes/serialized.cpp | 2 +- src/shapes/sphere.cpp | 2 +- 12 files changed, 73 insertions(+), 22 deletions(-) diff --git a/src/emitters/sky.cpp b/src/emitters/sky.cpp index fe3a559b..2daf4284 100644 --- a/src/emitters/sky.cpp +++ b/src/emitters/sky.cpp @@ -71,6 +71,10 @@ MTS_NAMESPACE_BEGIN * Specifies the relative amount of samples * allocated to this emitter. \default{1} * } + * \parameter{toWorld}{\Transform\Or\ATransform}{ + * Specifies an optional sensor-to-world transformation. + * \default{none (i.e. sensor space $=$ world space)} + * } * } * * \renderings{ @@ -376,8 +380,7 @@ public: bitmapData.ptr = (uint8_t *) bitmap.get(); bitmapData.size = sizeof(Bitmap); props.setData("bitmap", bitmapData); - const Transform &trafo = m_worldTransform->eval(0); - props.setTransform("toWorld", trafo); + props.setAnimatedTransform("toWorld", m_worldTransform); props.setFloat("samplingWeight", m_samplingWeight); Emitter *emitter = static_cast( PluginManager::getInstance()->createObject( diff --git a/src/emitters/sun.cpp b/src/emitters/sun.cpp index 88655d5c..fc1378b1 100644 --- a/src/emitters/sun.cpp +++ b/src/emitters/sun.cpp @@ -221,8 +221,7 @@ public: bitmapData.ptr = (uint8_t *) bitmap.get(); bitmapData.size = sizeof(Bitmap); props.setData("bitmap", bitmapData); - const Transform &trafo = m_worldTransform->eval(0); - props.setTransform("toWorld", trafo); + props.setAnimatedTransform("toWorld", m_worldTransform); props.setFloat("samplingWeight", m_samplingWeight); Emitter *emitter = static_cast( PluginManager::getInstance()->createObject( diff --git a/src/emitters/sunsky.cpp b/src/emitters/sunsky.cpp index 779e84c5..e2b29ed0 100644 --- a/src/emitters/sunsky.cpp +++ b/src/emitters/sunsky.cpp @@ -223,7 +223,7 @@ public: bitmapData.ptr = (uint8_t *) bitmap.get(); bitmapData.size = sizeof(Bitmap); envProps.setData("bitmap", bitmapData); - envProps.setTransform("toWorld", trafo); + envProps.setAnimatedTransform("toWorld", m_worldTransform); envProps.setFloat("samplingWeight", m_samplingWeight); m_envEmitter = static_cast( PluginManager::getInstance()->createObject( diff --git a/src/libcore/properties.cpp b/src/libcore/properties.cpp index f9b0dc58..9ef3d159 100644 --- a/src/libcore/properties.cpp +++ b/src/libcore/properties.cpp @@ -198,9 +198,9 @@ Properties::~Properties() { void Properties::operator=(const Properties &props) { for (std::map::iterator it = m_elements->begin(); it != m_elements->end(); ++it) { - AnimatedTransform *trafo = boost::get((*it).second.data); + AnimatedTransform **trafo = boost::get(&(*it).second.data); if (trafo) - trafo->decRef(); + (*trafo)->decRef(); } m_pluginName = props.m_pluginName; @@ -209,9 +209,9 @@ void Properties::operator=(const Properties &props) { for (std::map::iterator it = m_elements->begin(); it != m_elements->end(); ++it) { - AnimatedTransform *trafo = boost::get((*it).second.data); + AnimatedTransform **trafo = boost::get(&(*it).second.data); if (trafo) - trafo->incRef(); + (*trafo)->incRef(); } } @@ -223,6 +223,9 @@ bool Properties::removeProperty(const std::string &name) { std::map::iterator it = m_elements->find(name); if (it == m_elements->end()) return false; + AnimatedTransform **trafo = boost::get(&(*it).second.data); + if (trafo) + (*trafo)->decRef(); m_elements->erase(it); return true; } diff --git a/src/librender/scenehandler.cpp b/src/librender/scenehandler.cpp index 556f0bb1..79589d2d 100644 --- a/src/librender/scenehandler.cpp +++ b/src/librender/scenehandler.cpp @@ -271,7 +271,7 @@ void SceneHandler::endElement(const XMLCh* const xmlName) { if (context.attributes.find("id") != context.attributes.end()) context.properties.setID(context.attributes["id"]); - ref object = NULL; + ref object; TagMap::const_iterator it = m_tags.find(name); if (it == m_tags.end()) @@ -686,11 +686,57 @@ void SceneHandler::endElement(const XMLCh* const xmlName) { } break; - default: - if (tag.second == NULL) - XMLLog(EError, "Internal error: could not instantiate an object " - "corresponding to the tag '%s'", name.c_str()); - object = m_pluginManager->createObject(tag.second, context.properties); + default: { + if (tag.second == NULL) + XMLLog(EError, "Internal error: could not instantiate an object " + "corresponding to the tag '%s'", name.c_str()); + + Properties &props = context.properties; + + /* Convenience hack: allow passing animated transforms to arbitrary shapes + and then internally rewrite this into a shape group + animated instance */ + if (tag.second == MTS_CLASS(Shape) && props.getPluginName() != "instance" && + props.hasProperty("toWorld") && props.getType("toWorld") == Properties::EAnimatedTransform) { + + ref trafo = props.getAnimatedTransform("toWorld"); + props.removeProperty("toWorld"); + + if (trafo->isStatic()) + props.setTransform("toWorld", trafo->eval(0)); + + object = m_pluginManager->createObject(tag.second, props); + + if (!trafo->isStatic()) { + object = m_pluginManager->createObject(tag.second, props); + /* If the object has children, append them */ + for (std::vector > + ::iterator it = context.children.begin(); + it != context.children.end(); ++it) { + if (it->second != NULL) { + object->addChild(it->first, it->second); + it->second->setParent(object); + it->second->decRef(); + } + } + context.children.clear(); + + object->configure(); + + ref shapeGroup = static_cast ( + m_pluginManager->createObject(MTS_CLASS(Shape), Properties("shapegroup"))); + shapeGroup->addChild(object); + shapeGroup->configure(); + + Properties instanceProps("instance"); + instanceProps.setAnimatedTransform("toWorld", trafo); + object = m_pluginManager->createObject(instanceProps); + object->addChild(shapeGroup); + + } + } else { + object = m_pluginManager->createObject(tag.second, props); + } + } break; } diff --git a/src/shapes/cylinder.cpp b/src/shapes/cylinder.cpp index 83af281a..c438ae06 100644 --- a/src/shapes/cylinder.cpp +++ b/src/shapes/cylinder.cpp @@ -43,7 +43,7 @@ MTS_NAMESPACE_BEGIN * Is the cylinder inverted, i.e. should the normal vectors * be flipped? \default{\code{false}, i.e. the normals point outside} * } - * \parameter{toWorld}{\Transform}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/disk.cpp b/src/shapes/disk.cpp index e4b2d429..40f3f25b 100644 --- a/src/shapes/disk.cpp +++ b/src/shapes/disk.cpp @@ -31,7 +31,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{disk}{Disk intersection primitive} * \order{4} * \parameters{ - * \parameter{toWorld}{\Transform}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies a linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/obj.cpp b/src/shapes/obj.cpp index 14834ed0..015384e4 100644 --- a/src/shapes/obj.cpp +++ b/src/shapes/obj.cpp @@ -55,7 +55,7 @@ MTS_NAMESPACE_BEGIN * this convention. \default{\code{true}, i.e. flip them to get the * correct coordinates}. * } - * \parameter{toWorld}{\Transform}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/ply.cpp b/src/shapes/ply.cpp index 4faa7f25..634055e8 100644 --- a/src/shapes/ply.cpp +++ b/src/shapes/ply.cpp @@ -62,7 +62,7 @@ MTS_NAMESPACE_BEGIN * Optional flag to flip all normals. \default{\code{false}, i.e. * the normals are left unchanged}. * } - * \parameter{toWorld}{\Transform}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/rectangle.cpp b/src/shapes/rectangle.cpp index e5056a9e..d620b714 100644 --- a/src/shapes/rectangle.cpp +++ b/src/shapes/rectangle.cpp @@ -30,7 +30,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{rectangle}{Rectangle intersection primitive} * \order{3} * \parameters{ - * \parameter{toWorld}{\Transform}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies a linear object-to-world transformation. * It is allowed to use non-uniform scaling, but no shear. * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/serialized.cpp b/src/shapes/serialized.cpp index 279283fa..6d198707 100644 --- a/src/shapes/serialized.cpp +++ b/src/shapes/serialized.cpp @@ -48,7 +48,7 @@ MTS_NAMESPACE_BEGIN * Optional flag to flip all normals. \default{\code{false}, i.e. * the normals are left unchanged}. * } - * \parameter{toWorld}{\Transform}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/sphere.cpp b/src/shapes/sphere.cpp index 0b644d19..bfd77026 100644 --- a/src/shapes/sphere.cpp +++ b/src/shapes/sphere.cpp @@ -37,7 +37,7 @@ MTS_NAMESPACE_BEGIN * \parameter{radius}{\Float}{ * Radius of the sphere in object-space units \default{1} * } - * \parameter{toWorld}{\Transform}{ + * \parameter{toWorld}{\Transform\Or\ATransform}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} From b5b71e073206041805b7f518e9c7ba8ce92867e7 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Sat, 3 Nov 2012 03:19:05 -0400 Subject: [PATCH 05/18] updated the documentation with information on how to specify animated transformations --- doc/format.tex | 30 ++++++++++++++++++++++++++++-- doc/main.tex | 2 +- doc/misc.tex | 2 +- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/doc/format.tex b/doc/format.tex index cd03be70..0680da42 100644 --- a/doc/format.tex +++ b/doc/format.tex @@ -276,7 +276,7 @@ choices are available: \begin{xml} \end{xml} -\item lookat transformations --- this is primarily useful for setting up cameras (and spot lights). The \code{origin} coordinates +\item \code{lookat} transformations --- this is primarily useful for setting up cameras (and spot lights). The \code{origin} coordinates specify the camera origin, \code{target} is the point that the camera will look at, and the (optional) \code{up} parameter determines the ``upward'' direction in the final rendered image. The \code{up} parameter is not needed for spot lights. @@ -286,7 +286,33 @@ The \code{up} parameter is not needed for spot lights. \end{itemize} Cordinates that are zero (for \code{translate} and \code{rotate}) or one (for \code{scale}) do not explicitly have to be specified. -\subsection{Instancing} +\subsection{Animated transformations} +Most shapes, emitters, and sensors in Mitsuba can accept both normal transformations +and \emph{animated transformations} as parameters. The latter is useful to +render scenes involving motion blur. The syntax used to specify these +is slightly different: +\begin{xml} + + + .. chained list of transformations as discussed above .. + + + + .. chained list of transformations as discussed above .. + + + .. additional transformations (optional) .. + +\end{xml} +Mitsuba then decomposes each transformation into a scale, translation, and +rotation component and interpolates\footnote{Using linear interpolation +for the scale and translation component and spherical linear quaternion +interpolation for the rotation component.} these for intermediate +time values. +It is important to specify appropriate shutter open/close times +to the sensor so that the motion is visible. + +\subsection{References} Quite often, you will find yourself using an object (such as a material) in many places. To avoid having to declare it over and over again, which wastes memory, you can make use of references. Here is an example of how this works: diff --git a/doc/main.tex b/doc/main.tex index 170e619d..40d29280 100644 --- a/doc/main.tex +++ b/doc/main.tex @@ -116,7 +116,7 @@ medium,film,sampler,integrator,emitter,sensor, translate,rotate,scale,lookat,point,vector,matrix, include,fscat,volume,alias,rfilter,boolean, - subsurface + subsurface,atransform }, } diff --git a/doc/misc.tex b/doc/misc.tex index 34cc1329..890915db 100644 --- a/doc/misc.tex +++ b/doc/misc.tex @@ -24,7 +24,7 @@ It is important to keep in mind that other applications may not support this ``linearized sRGB'' space---in particular, the Mac OS preview currently does not display images with this encoding correctly. -\subsubsection{Spectral mode} +\subsubsection{Spectral rendering} Some predictive rendering applications will require a more realistic space for interreflection computations. In such cases, Mitsuba can be switched to \emph{spectral mode}. This can be done by compiling it with the \code{SPECTRUM\_SAMPLES=}$n$ parameter From 9d424186e3384f21f32925221beeba6314c02f72 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Sat, 3 Nov 2012 04:18:01 -0400 Subject: [PATCH 06/18] some work on the deformable shape plugin --- src/shapes/SConscript | 2 +- src/shapes/{pointcache.cpp => deformable.cpp} | 32 ++++++++++++------- 2 files changed, 21 insertions(+), 13 deletions(-) rename src/shapes/{pointcache.cpp => deformable.cpp} (93%) diff --git a/src/shapes/SConscript b/src/shapes/SConscript index 130f7dc7..3fad1fdb 100644 --- a/src/shapes/SConscript +++ b/src/shapes/SConscript @@ -11,6 +11,6 @@ plugins += env.SharedLibrary('cylinder', ['cylinder.cpp']) plugins += env.SharedLibrary('hair', ['hair.cpp']) plugins += env.SharedLibrary('shapegroup', ['shapegroup.cpp']) plugins += env.SharedLibrary('instance', ['instance.cpp']) -plugins += env.SharedLibrary('pointcache', ['pointcache.cpp']) +plugins += env.SharedLibrary('deformable', ['deformable.cpp']) Export('plugins') diff --git a/src/shapes/pointcache.cpp b/src/shapes/deformable.cpp similarity index 93% rename from src/shapes/pointcache.cpp rename to src/shapes/deformable.cpp index f208690d..fa793a9a 100644 --- a/src/shapes/pointcache.cpp +++ b/src/shapes/deformable.cpp @@ -296,9 +296,9 @@ protected: AABB m_spatialAABB; }; -class PointCache : public Shape { +class Deformable : public Shape { public: - PointCache(const Properties &props) : Shape(props) { + Deformable(const Properties &props) : Shape(props) { FileResolver *fResolver = Thread::getThread()->getFileResolver(); fs::path path = fResolver->resolve(props.getString("filename")); if (path.extension() != ".mdd") @@ -322,10 +322,9 @@ public: m_positions.push_back(reinterpret_cast(mStream->getCurrentData())); mStream->skip(m_vertexCount * 3 * sizeof(float)); } - Assert(mStream->getPos() == mStream->getSize()); } - PointCache(Stream *stream, InstanceManager *manager) + Deformable(Stream *stream, InstanceManager *manager) : Shape(stream, manager) { /// TBD } @@ -380,6 +379,7 @@ public: its.shFrame = its.geoFrame; its.wi = its.toLocal(-ray.d); its.shape = this; + its.instance = this; its.hasUVPartials = false; its.time = ray.time; } @@ -388,11 +388,6 @@ public: return m_kdtree->getSpatialAABB(); } - Float getSurfaceArea() const { - Log(EError, "PointCache::getSurfaceArea(): Not implemented."); - return -1; - } - size_t getPrimitiveCount() const { return m_mesh->getTriangleCount(); } @@ -406,6 +401,18 @@ public: if (cClass->derivesFrom(TriMesh::m_theClass)) { Assert(m_mesh == NULL); m_mesh = static_cast(child); + if (m_mesh->getVertexCount() != m_vertexCount) + Log(EError, "Geometry mismatch! MDD file contains %u vertices. " + "The attached shape uses %u!", m_vertexCount, m_mesh->getVertexCount()); + } else if (cClass->derivesFrom(Shape::m_theClass) && static_cast(child)->isCompound()) { + size_t index = 0; + Shape *shape = static_cast(child); + do { + ref element = shape->getElement(index++); + if (element == NULL) + break; + addChild(name, element); + } while (true); } else { Shape::addChild(name, child); } @@ -413,7 +420,8 @@ public: std::string toString() const { std::ostringstream oss; - oss << "PointCache[" << endl + oss << "Deformable[" << endl + << " mesh = " << indent(m_mesh.toString()) << endl << "]"; return oss.str(); } @@ -430,6 +438,6 @@ private: }; MTS_IMPLEMENT_CLASS(SpaceTimeKDTree, false, KDTreeBase) -MTS_IMPLEMENT_CLASS_S(PointCache, false, Shape) -MTS_EXPORT_PLUGIN(PointCache, "Point cache"); +MTS_IMPLEMENT_CLASS_S(Deformable, false, Shape) +MTS_EXPORT_PLUGIN(Deformable, "Deformable shape"); MTS_NAMESPACE_END From 51708931956553ffb1503bd6f0c6b52cf2023973 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 5 Nov 2012 22:48:12 -0500 Subject: [PATCH 07/18] fixed animation support for the 'thinlens' plugin --- include/mitsuba/render/shape.h | 3 ++ include/mitsuba/render/track.h | 61 ++++++++++++++++++++++++++++ src/librender/scenehandler.cpp | 8 +++- src/librender/track.cpp | 66 ++++++++++++++++++++++++++++++ src/mtsgui/save.cpp | 2 +- src/sensors/thinlens.cpp | 11 ++--- src/shapes/disk.cpp | 74 +++++++++++++++++++--------------- 7 files changed, 182 insertions(+), 43 deletions(-) diff --git a/include/mitsuba/render/shape.h b/include/mitsuba/render/shape.h index 8ad7e0a3..723c8807 100644 --- a/include/mitsuba/render/shape.h +++ b/include/mitsuba/render/shape.h @@ -193,6 +193,9 @@ public: /** * \brief Return the shape's surface area * + * Assumes that the object is not undergoing some kind of + * time-dependent scaling. + * * The default implementation throws an exception */ virtual Float getSurfaceArea() const; diff --git a/include/mitsuba/render/track.h b/include/mitsuba/render/track.h index bd6c6642..4c418c58 100644 --- a/include/mitsuba/render/track.h +++ b/include/mitsuba/render/track.h @@ -66,6 +66,9 @@ public: /// Serialize to a binary data stream virtual void serialize(Stream *stream) const = 0; + /// Clone this track + virtual AbstractAnimationTrack *clone() const = 0; + MTS_DECLARE_CLASS() protected: AbstractAnimationTrack(EType type, size_t nKeyframes) @@ -96,6 +99,13 @@ public: unserialize(stream, m_values[i]); } + /// Copy constructor + AnimationTrack(const AnimationTrack *track) + : AbstractAnimationTrack(track->getType(), track->getSize()) { + m_times = track->m_times; + m_values = track->m_values; + } + /// Set the value of a certain keyframe inline void setValue(size_t idx, const ValueType &value) { m_values[idx] = value; } @@ -111,6 +121,17 @@ public: m_values.push_back(value); } + /// Clone this instance + AbstractAnimationTrack *clone() const { + return new AnimationTrack(this); + } + + /// Prepend a transformation to every entry of this track + void prependTransformation(const ValueType &value) { + for (size_t i=0; iwriteUInt(m_type); @@ -201,6 +222,10 @@ protected: /// Is this a "no-op" transformation? inline bool isNoOp(const ValueType &value) const; + /// Concatenate two transformations + inline ValueType concatenateTransformations( + const ValueType &value1, const ValueType &value2) const; + inline void unserialize(Stream *stream, ValueType &value) { value = stream->readElement(); } @@ -221,6 +246,27 @@ template<> inline Quaternion AnimationTrack::lerp(size_t idx0, size_ return slerp(m_values[idx0], m_values[idx1], t); } +template inline T AnimationTrack::concatenateTransformations( + const T &value1, const T &value2) const { + return value1 * value2; +} + +template<> inline Vector AnimationTrack::concatenateTransformations( + const Vector &value1, const Vector &value2) const { + if (m_type == ETranslationXYZ) + return value1 + value2; + else + return Vector(value1.x * value2.x, value1.y * value2.y, value1.z * value2.z); +} + +template<> inline Float AnimationTrack::concatenateTransformations( + const Float &value1, const Float &value2) const { + if (m_type == ETranslationX || m_type == ETranslationY || m_type == ETranslationZ) + return value1 + value2; + else + return value1 * value2; +} + template inline bool AnimationTrack::isNoOp(const ValueType &value) const { return false; } @@ -301,10 +347,22 @@ public: /// Unserialized an animated transformation from a binary data stream AnimatedTransform(Stream *stream); + /// Copy constructor + AnimatedTransform(const AnimatedTransform *trafo); + /// Return the number of associated animation tracks inline size_t getTrackCount() const { return m_tracks.size(); } + /// Find a track of the given type + AbstractAnimationTrack *findTrack(AbstractAnimationTrack::EType type); + + /// Find a track of the given type + const AbstractAnimationTrack *findTrack(AbstractAnimationTrack::EType type) const; + /// Look up one of the tracks by index + inline AbstractAnimationTrack *getTrack(size_t idx) { return m_tracks[idx]; } + + /// Look up one of the tracks by index (const version) inline const AbstractAnimationTrack *getTrack(size_t idx) const { return m_tracks[idx]; } /// Return the used keyframes as a set @@ -396,6 +454,9 @@ public: eval(t).operator()(r, dest); } + /// Prepend a scale transformation to the transform (this is often useful) + void prependScale(const Vector &scale); + /// Serialize to a binary data stream void serialize(Stream *stream) const; diff --git a/src/librender/scenehandler.cpp b/src/librender/scenehandler.cpp index 79589d2d..5c8d7ad5 100644 --- a/src/librender/scenehandler.cpp +++ b/src/librender/scenehandler.cpp @@ -695,8 +695,12 @@ void SceneHandler::endElement(const XMLCh* const xmlName) { /* Convenience hack: allow passing animated transforms to arbitrary shapes and then internally rewrite this into a shape group + animated instance */ - if (tag.second == MTS_CLASS(Shape) && props.getPluginName() != "instance" && - props.hasProperty("toWorld") && props.getType("toWorld") == Properties::EAnimatedTransform) { + if (tag.second == MTS_CLASS(Shape) + && props.hasProperty("toWorld") + && props.getType("toWorld") == Properties::EAnimatedTransform + && (props.getPluginName() != "instance" && props.getPluginName() != "disk")) { + /* (The 'disk' plugin also directly supports animated transformations, so + the instancing trick isn't required for it) */ ref trafo = props.getAnimatedTransform("toWorld"); props.removeProperty("toWorld"); diff --git a/src/librender/track.cpp b/src/librender/track.cpp index fd4ee034..47f1b3c1 100644 --- a/src/librender/track.cpp +++ b/src/librender/track.cpp @@ -3,6 +3,16 @@ MTS_NAMESPACE_BEGIN +AnimatedTransform::AnimatedTransform(const AnimatedTransform *trafo) + : m_transform(trafo->m_transform) { + m_tracks.reserve(trafo->getTrackCount()); + for (size_t i=0; igetTrackCount(); ++i) { + AbstractAnimationTrack *track = trafo->getTrack(i)->clone(); + m_tracks.push_back(track); + track->incRef(); + } +} + AnimatedTransform::AnimatedTransform(Stream *stream) { size_t nTracks = stream->readSize(); if (nTracks == 0) { @@ -183,6 +193,62 @@ void AnimatedTransform::sortAndSimplify() { } } + +const AbstractAnimationTrack *AnimatedTransform::findTrack(AbstractAnimationTrack::EType type) const { + for (size_t i=0; igetType() == type) + return track; + } + return NULL; +} +AbstractAnimationTrack *AnimatedTransform::findTrack(AbstractAnimationTrack::EType type) { + for (size_t i=0; igetType() == type) + return track; + } + return NULL; +} + +void AnimatedTransform::prependScale(const Vector &scale) { + FloatTrack *trackX = (FloatTrack *) findTrack(AbstractAnimationTrack::EScaleX); + FloatTrack *trackY = (FloatTrack *) findTrack(AbstractAnimationTrack::EScaleY); + FloatTrack *trackZ = (FloatTrack *) findTrack(AbstractAnimationTrack::EScaleZ); + VectorTrack *trackXYZ = (VectorTrack *) findTrack(AbstractAnimationTrack::EScaleXYZ); + + if (m_tracks.empty()) { + m_transform = m_transform * Transform::scale(scale); + } else if (trackXYZ) { + trackXYZ->prependTransformation(scale); + } else if (trackX && trackY && trackZ) { + if (trackX) { + trackX->prependTransformation(scale.x); + } else { + trackX = new FloatTrack(AbstractAnimationTrack::EScaleX); + trackX->append(0.0f, scale.x); addTrack(trackX); + } + + if (trackY) { + trackY->prependTransformation(scale.y); + } else { + trackY = new FloatTrack(AbstractAnimationTrack::EScaleY); + trackY->append(0.0f, scale.y); addTrack(trackY); + } + + if (trackZ) { + trackZ->prependTransformation(scale.z); + } else { + trackZ = new FloatTrack(AbstractAnimationTrack::EScaleZ); + trackZ->append(0.0f, scale.z); addTrack(trackZ); + } + } else { + trackXYZ = new VectorTrack(AbstractAnimationTrack::EScaleXYZ); + trackXYZ->append(0.0f, scale); + addTrack(trackXYZ); + } +} + void AnimatedTransform::collectKeyframes(std::set &result) const { for (size_t i=0; i times; trafo->collectKeyframes(times); - property = doc.createElement("animation"); + property = doc.createElement("atransform"); for (std::set::iterator it2 = times.begin(); it2 != times.end(); ++it2) { const Matrix4x4 &matrix = trafo->eval(*it2).getMatrix(); diff --git a/src/sensors/thinlens.cpp b/src/sensors/thinlens.cpp index c81c2cea..fce964b8 100644 --- a/src/sensors/thinlens.cpp +++ b/src/sensors/thinlens.cpp @@ -137,7 +137,7 @@ public: m_apertureRadius = Epsilon; } - if (props.getTransform("toWorld", Transform()).hasScale()) + if (props.getAnimatedTransform("toWorld", Transform())->eval(0).hasScale()) Log(EError, "Scale factors in the camera-to-world " "transformation are not allowed!"); } @@ -520,14 +520,11 @@ public: } ref createShape(const Scene *scene) { - if (!m_worldTransform->isStatic()) - Log(EError, "Bidirectional renderings involving moving " - "perspective cameras with depth of field are currently not supported!"); - Transform trafo = m_worldTransform->eval(0) * - Transform::scale(Vector(m_apertureRadius)); + ref trafo = new AnimatedTransform(m_worldTransform); + trafo->prependScale(Vector(m_apertureRadius)); Properties props("disk"); - props.setTransform("toWorld", trafo); + props.setAnimatedTransform("toWorld", trafo); Shape *shape = static_cast (PluginManager::getInstance()-> createObject(MTS_CLASS(Shape), props)); shape->addChild(this); diff --git a/src/shapes/disk.cpp b/src/shapes/disk.cpp index 40f3f25b..8380b100 100644 --- a/src/shapes/disk.cpp +++ b/src/shapes/disk.cpp @@ -81,31 +81,29 @@ MTS_NAMESPACE_BEGIN class Disk : public Shape { public: Disk(const Properties &props) : Shape(props) { - m_objectToWorld = props.getTransform("toWorld", Transform()); + m_objectToWorld = new AnimatedTransform(props.getAnimatedTransform("toWorld", Transform())); + if (props.getBoolean("flipNormals", false)) - m_objectToWorld = m_objectToWorld * Transform::scale(Vector(1, 1, -1)); - m_worldToObject = m_objectToWorld.inverse(); + m_objectToWorld->prependScale(Vector(1, 1, -1)); } Disk(Stream *stream, InstanceManager *manager) : Shape(stream, manager) { - m_objectToWorld = Transform(stream); - m_worldToObject = m_objectToWorld.inverse(); + m_objectToWorld = new AnimatedTransform(stream); configure(); } void serialize(Stream *stream, InstanceManager *manager) const { Shape::serialize(stream, manager); - m_objectToWorld.serialize(stream); + m_objectToWorld->serialize(stream); } void configure() { Shape::configure(); - m_normal = normalize(m_objectToWorld(Normal(0, 0, 1))); - - Vector dpdu = m_objectToWorld(Vector(1, 0, 0)); - Vector dpdv = m_objectToWorld(Vector(0, 1, 0)); + const Transform &trafo = m_objectToWorld->eval(0); + Vector dpdu = trafo(Vector(1, 0, 0)); + Vector dpdv = trafo(Vector(0, 1, 0)); if (std::abs(dot(dpdu, dpdv)) > 1e-3f) Log(EError, "Error: 'toWorld' transformation contains shear!"); @@ -117,23 +115,30 @@ public: } AABB getAABB() const { + std::set times; + m_objectToWorld->collectKeyframes(times); + AABB aabb; - aabb.expandBy(m_objectToWorld(Point( 1, 0, 0))); - aabb.expandBy(m_objectToWorld(Point(-1, 0, 0))); - aabb.expandBy(m_objectToWorld(Point( 0, 1, 0))); - aabb.expandBy(m_objectToWorld(Point( 0, -1, 0))); + for (std::set::iterator it = times.begin(); it != times.end(); ++it) { + const Transform &trafo = m_objectToWorld->eval(*it); + aabb.expandBy(trafo(Point( 1, 0, 0))); + aabb.expandBy(trafo(Point(-1, 0, 0))); + aabb.expandBy(trafo(Point( 0, 1, 0))); + aabb.expandBy(trafo(Point( 0, -1, 0))); + } return aabb; } Float getSurfaceArea() const { - Vector dpdu = m_objectToWorld(Vector(1, 0, 0)); - Vector dpdv = m_objectToWorld(Vector(0, 1, 0)); + const Transform &trafo = m_objectToWorld->eval(0); + Vector dpdu = trafo(Vector(1, 0, 0)); + Vector dpdv = trafo(Vector(0, 1, 0)); return M_PI * dpdu.length() * dpdv.length(); } inline bool rayIntersect(const Ray &_ray, Float mint, Float maxt, Float &t, void *temp) const { Ray ray; - m_worldToObject.transformAffine(_ray, ray); + m_objectToWorld->eval(ray.time).inverse().transformAffine(_ray, ray); Float hit = -ray.o.z / ray.d.z; if (hit < mint || hit > maxt) @@ -173,18 +178,20 @@ public: phi += 2*M_PI; Float cosPhi = data[0] * invR, sinPhi = data[1] * invR; + const Transform &trafo = m_objectToWorld->eval(ray.time); its.shape = this; if (r != 0) { - its.dpdu = m_objectToWorld(Vector(cosPhi, sinPhi, 0)); - its.dpdv = m_objectToWorld(Vector(-sinPhi, cosPhi, 0)); + its.dpdu = trafo(Vector(cosPhi, sinPhi, 0)); + its.dpdv = trafo(Vector(-sinPhi, cosPhi, 0)); } else { - its.dpdu = m_objectToWorld(Vector(1, 0, 0)); - its.dpdv = m_objectToWorld(Vector(0, 1, 0)); + its.dpdu = trafo(Vector(1, 0, 0)); + its.dpdv = trafo(Vector(0, 1, 0)); } its.shFrame = its.geoFrame = Frame( - normalize(its.dpdu), normalize(its.dpdv), m_normal); + normalize(its.dpdu), normalize(its.dpdv), + normalize(trafo(Normal(0, 0, 1)))); its.uv = Point2(r, phi * INV_TWOPI); its.p = ray(its.t); its.wi = its.toLocal(-ray.d); @@ -206,16 +213,19 @@ public: Float dphi = (2 * M_PI) / (Float) (phiSteps-1); - Point center = m_objectToWorld(Point(0.0f)); + const Transform &trafo = m_objectToWorld->eval(0.0f); + Point center = trafo(Point(0.0f)); + Normal normal = normalize(trafo(Normal(0, 0, 1))); + for (uint32_t i=0; ieval(pRec.time); Point2 p = Warp::squareToUniformDiskConcentric(sample); - pRec.p = m_objectToWorld(Point3(p.x, p.y, 0)); - pRec.n = m_normal; + pRec.p = trafo(Point3(p.x, p.y, 0)); + pRec.n = trafo(normalize(Normal(0,0,1))); pRec.pdf = m_invSurfaceArea; pRec.measure = EArea; } @@ -261,7 +272,7 @@ public: std::string toString() const { std::ostringstream oss; oss << "Disk[" << endl - << " objectToWorld = " << indent(m_objectToWorld.toString()) << "," << endl + << " objectToWorld = " << indent(m_objectToWorld->toString()) << "," << endl << " bsdf = " << indent(m_bsdf.toString()) << "," << endl; if (isMediumTransition()) { oss << " interiorMedium = " << indent(m_interiorMedium.toString()) << "," << endl @@ -276,10 +287,7 @@ public: MTS_DECLARE_CLASS() private: - Transform m_objectToWorld; - Transform m_worldToObject; - Normal m_normal; - Float m_surfaceArea; + ref m_objectToWorld; Float m_invSurfaceArea; }; From dbf62f906b78bc3eaba7561e82c45192c882a094 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Wed, 7 Nov 2012 21:54:39 -0500 Subject: [PATCH 08/18] support for PLY files containing quadrilaterals. handle a typo in files that seems to be common (a property list named 'vertex_index' instead of 'vertex_indices') --- src/shapes/ply.cpp | 66 ++++++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 23 deletions(-) diff --git a/src/shapes/ply.cpp b/src/shapes/ply.cpp index 634055e8..75fca394 100644 --- a/src/shapes/ply.cpp +++ b/src/shapes/ply.cpp @@ -108,13 +108,14 @@ public: Log(EError, "PLY file \"%s\" could not be found!", filePath.string().c_str()); m_triangleCount = m_vertexCount = 0; - m_vertexCtr = m_triangleCtr = m_triangleIdxCtr = 0; + m_vertexCtr = m_faceCount = m_faceCtr = m_indexCtr = 0; m_normal = Normal(0.0f); m_uv = Point2(0.0f); m_hasNormals = false; m_hasTexCoords = false; - memset(&m_triangle, 0, sizeof(Triangle)); + memset(&m_face, 0, sizeof(uint32_t)*4); loadPLY(filePath); + if (m_triangleCount == 0 || m_vertexCount == 0) Log(EError, "Unable to load \"%s\" (no triangles or vertices found)!"); @@ -125,7 +126,15 @@ public: rebuildTopology(props.getFloat("maxSmoothAngle")); } - Assert(m_triangleCtr == m_triangleCount); + if (m_triangleCount < m_faceCount * 2) { + /* Needed less memory than the earlier conservative estimate -- free it! */ + Triangle *temp = new Triangle[m_triangleCount]; + memcpy(temp, m_triangles, sizeof(Triangle) * m_triangleCount); + delete[] m_triangles; + m_triangles = temp; + } + + Assert(m_faceCtr == m_faceCount); Assert(m_vertexCtr == m_vertexCount); } @@ -171,8 +180,8 @@ public: std::tr1::bind(&PLYLoader::vertex_end_callback, this) ); } else if (element_name == "face") { - m_triangleCount = count; - m_triangles = new Triangle[m_triangleCount]; + m_faceCount = count; + m_triangles = new Triangle[m_faceCount*2]; return std::tr1::tuple, std::tr1::function >( std::tr1::bind(&PLYLoader::face_begin_callback, this), @@ -263,32 +272,42 @@ public: void face_end_callback() { } void face_vertex_indices_begin_uint8(ply::uint8 size) { - if (size != 3) - Log(EError, "Only triangle PLY meshes are supported for now."); - m_triangleIdxCtr = 0; + if (size != 3 && size != 4) + Log(EError, "Only triangle and quad-based PLY meshes are supported for now."); + m_indexCtr = 0; } void face_vertex_indices_begin_uint32(ply::uint32 size) { - if (size != 3) - Log(EError, "Only triangle PLY meshes are supported for now."); - m_triangleIdxCtr = 0; + if (size != 3 && size != 4) + Log(EError, "Only triangle and quad-based PLY meshes are supported for now."); + m_indexCtr = 0; } void face_vertex_indices_element_int32(ply::int32 element) { - Assert(m_triangleIdxCtr < 3); + Assert(m_indexCtr < 4); Assert((size_t) element < m_vertexCount); - m_triangle.idx[m_triangleIdxCtr++] = element; + m_face[m_indexCtr++] = element; } void face_vertex_indices_element_uint32(ply::uint32 element) { - Assert(m_triangleIdxCtr < 3); + Assert(m_indexCtr < 4); Assert((size_t) element < m_vertexCount); - m_triangle.idx[m_triangleIdxCtr++] = element; + m_face[m_indexCtr++] = element; } void face_vertex_indices_end() { - Assert(m_triangleIdxCtr == 3); - m_triangles[m_triangleCtr++] = m_triangle; + Assert(m_indexCtr == 3 || m_indexCtr == 4); + + Triangle t; + t.idx[0] = m_face[0]; t.idx[1] = m_face[1]; t.idx[2] = m_face[2]; + m_triangles[m_triangleCount++] = t; + + if (m_indexCtr == 4) { + t.idx[0] = m_face[3]; t.idx[1] = m_face[0]; t.idx[2] = m_face[2]; + m_triangles[m_triangleCount++] = t; + } + + m_faceCtr++; } MTS_DECLARE_CLASS() @@ -297,8 +316,9 @@ private: Normal m_normal; Float m_red, m_green, m_blue; Transform m_objectToWorld; - size_t m_vertexCtr, m_triangleCtr, m_triangleIdxCtr; - Triangle m_triangle; + size_t m_faceCount, m_vertexCtr; + size_t m_faceCtr, m_indexCtr; + uint32_t m_face[4]; bool m_hasNormals, m_hasTexCoords; Point2 m_uv; bool m_sRGB; @@ -380,7 +400,7 @@ template<> std::tr1::tuple, std::tr1::function, std::tr1::function > PLYLoader::list_property_definition_callback(const std::string& element_name, const std::string& property_name) { - if ((element_name == "face") && (property_name == "vertex_indices")) { + if ((element_name == "face") && (property_name == "vertex_indices" || property_name == "vertex_index")) { return std::tr1::tuple, std::tr1::function, std::tr1::function >( std::tr1::bind(&PLYLoader::face_vertex_indices_begin_uint8, this, _1), @@ -404,7 +424,7 @@ template<> std::tr1::tuple, std::tr1::function, std::tr1::function > PLYLoader::list_property_definition_callback(const std::string& element_name, const std::string& property_name) { - if ((element_name == "face") && (property_name == "vertex_indices")) { + if ((element_name == "face") && (property_name == "vertex_indices" || property_name == "vertex_index")) { return std::tr1::tuple, std::tr1::function, std::tr1::function >( std::tr1::bind(&PLYLoader::face_vertex_indices_begin_uint32, this, _1), @@ -428,7 +448,7 @@ template<> std::tr1::tuple, std::tr1::function, std::tr1::function > PLYLoader::list_property_definition_callback(const std::string& element_name, const std::string& property_name) { - if ((element_name == "face") && (property_name == "vertex_indices")) { + if ((element_name == "face") && (property_name == "vertex_indices" || property_name == "vertex_index")) { return std::tr1::tuple, std::tr1::function, std::tr1::function >( std::tr1::bind(&PLYLoader::face_vertex_indices_begin_uint8, this, _1), @@ -452,7 +472,7 @@ template<> std::tr1::tuple, std::tr1::function, std::tr1::function > PLYLoader::list_property_definition_callback(const std::string& element_name, const std::string& property_name) { - if ((element_name == "face") && (property_name == "vertex_indices")) { + if ((element_name == "face") && (property_name == "vertex_indices" || property_name == "vertex_index")) { return std::tr1::tuple, std::tr1::function, std::tr1::function >( std::tr1::bind(&PLYLoader::face_vertex_indices_begin_uint32, this, _1), From 5bfb27ea419e6aec4a53eeadffc8733f905cf1f4 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Wed, 7 Nov 2012 23:11:55 -0500 Subject: [PATCH 09/18] increased temporary storage for intersections (possibly revert this later on), clipping support for removing unwanted animation segments --- include/mitsuba/render/skdtree.h | 4 ++-- src/shapes/deformable.cpp | 28 ++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/include/mitsuba/render/skdtree.h b/include/mitsuba/render/skdtree.h index efc302dd..e6f25f9d 100644 --- a/include/mitsuba/render/skdtree.h +++ b/include/mitsuba/render/skdtree.h @@ -32,9 +32,9 @@ #if defined(SINGLE_PRECISION) /// 32 byte temporary storage for intersection computations -#define MTS_KD_INTERSECTION_TEMP 32 -#else #define MTS_KD_INTERSECTION_TEMP 64 +#else +#define MTS_KD_INTERSECTION_TEMP 128 #endif MTS_NAMESPACE_BEGIN diff --git a/src/shapes/deformable.cpp b/src/shapes/deformable.cpp index fa793a9a..4f82ff41 100644 --- a/src/shapes/deformable.cpp +++ b/src/shapes/deformable.cpp @@ -315,13 +315,37 @@ public: Log(EInfo, "Point cache has %i frames and %i vertices", frameCount, m_vertexCount); + Float clipStart = props.getFloat("clipStart", 0), + clipEnd = props.getFloat("clipEnd", 0); + + std::vector frameTimes; + std::vector positions; + for (uint32_t i=0; ireadSingle()); + frameTimes.push_back((Float) mStream->readSingle()); for (uint32_t i=0; i(mStream->getCurrentData())); + positions.push_back(reinterpret_cast(mStream->getCurrentData())); mStream->skip(m_vertexCount * 3 * sizeof(float)); } + + if (clipStart != clipEnd) { + m_positions.reserve(positions.size()); + m_frameTimes.reserve(frameTimes.size()); + for (uint32_t i=0; i= clipStart && frameTimes[i] <= clipEnd) { + m_frameTimes.push_back(frameTimes[i]); + m_positions.push_back(positions[i]); + } + } + if (m_frameTimes.empty()) + Log(EError, "After clipping to the time range [%f, %f] no frames were left!", + clipStart, clipEnd); + Log(EInfo, "Clipped away %u/%u frames", frameCount - (uint32_t) m_frameTimes.size(), frameCount); + } else { + m_positions = positions; + m_frameTimes = frameTimes; + } } Deformable(Stream *stream, InstanceManager *manager) From e39ed8486636e92665ce876393768c3aed439427 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Wed, 14 Nov 2012 11:58:55 -0500 Subject: [PATCH 10/18] add missing mtsimport binary on Fedora --- data/linux/fedora/mitsuba.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/linux/fedora/mitsuba.spec b/data/linux/fedora/mitsuba.spec index b1958bc3..aeb0a0f3 100644 --- a/data/linux/fedora/mitsuba.spec +++ b/data/linux/fedora/mitsuba.spec @@ -35,13 +35,14 @@ mkdir -p $RPM_BUILD_ROOT/usr/share/mitsuba/plugins mkdir -p $RPM_BUILD_ROOT/usr/share/pixmaps mkdir -p $RPM_BUILD_ROOT/usr/share/applications mkdir -p $RPM_BUILD_ROOT/usr/include -strip dist/lib* dist/mtsgui dist/mitsuba dist/mtssrv dist/mtsutil +strip dist/lib* dist/mtsgui dist/mitsuba dist/mtssrv dist/mtsutil dist/mtsimport strip dist/plugins/* dist/python/*/* cp dist/libmitsuba-*.so $RPM_BUILD_ROOT%{_libdir} cp dist/mtsgui $RPM_BUILD_ROOT%{_bindir} cp dist/mitsuba $RPM_BUILD_ROOT%{_bindir} cp dist/mtssrv $RPM_BUILD_ROOT%{_bindir} cp dist/mtsutil $RPM_BUILD_ROOT%{_bindir} +cp dist/mtsimport $RPM_BUILD_ROOT%{_bindir} cp dist/python/2.7/mitsuba.so $RPM_BUILD_ROOT%{_libdir}/python2.7/lib-dynload cp dist/plugins/* $RPM_BUILD_ROOT/usr/share/mitsuba/plugins cp -Rdp dist/data $RPM_BUILD_ROOT/usr/share/mitsuba/data From b36db496001dc75e742f670d4dbfcaf94f93e497 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 28 Jan 2013 16:07:25 -0500 Subject: [PATCH 11/18] enhanced customizable rendering statistics --- include/mitsuba/core/properties.h | 4 + include/mitsuba/core/util.h | 3 + include/mitsuba/render/film.h | 2 +- include/mitsuba/render/renderjob.h | 2 +- include/mitsuba/render/renderqueue.h | 3 + include/mitsuba/render/scene.h | 2 +- src/films/hdrfilm.cpp | 144 ++++++++++++++++++++------- src/films/ldrfilm.cpp | 2 +- src/films/mfilm.cpp | 2 +- src/films/tiledhdrfilm.cpp | 6 +- src/libcore/bitmap.cpp | 4 +- src/libcore/fmtconv.cpp | 9 +- src/libcore/properties.cpp | 8 ++ src/libcore/util.cpp | 64 +++++++++--- src/librender/renderqueue.cpp | 16 ++- src/librender/scene.cpp | 6 +- src/librender/scenehandler.cpp | 3 +- 17 files changed, 209 insertions(+), 71 deletions(-) diff --git a/include/mitsuba/core/properties.h b/include/mitsuba/core/properties.h index 2b898836..bc505075 100644 --- a/include/mitsuba/core/properties.h +++ b/include/mitsuba/core/properties.h @@ -185,6 +185,10 @@ public: /// Return one of the parameters (converting it to a string if necessary, with default value) std::string getAsString(const std::string &name, const std::string &defVal) const; + /// Copy an attribute from another Properties object and potentially rename it + void copyAttribute(const Properties &properties, + const std::string &sourceName, const std::string &targetName); + /// Store an array containing the names of all stored properties void putPropertyNames(std::vector &results) const; diff --git a/include/mitsuba/core/util.h b/include/mitsuba/core/util.h index 985afeef..7bd67cb6 100644 --- a/include/mitsuba/core/util.h +++ b/include/mitsuba/core/util.h @@ -110,6 +110,9 @@ extern MTS_EXPORT_CORE int getCoreCount(); /// Return the host name of this machine extern MTS_EXPORT_CORE std::string getHostName(); +/// Return the process private memory usage in bytes +extern MTS_EXPORT_CORE size_t getPrivateMemoryUsage(); + /// Return the fully qualified domain name of this machine extern MTS_EXPORT_CORE std::string getFQDN(); diff --git a/include/mitsuba/render/film.h b/include/mitsuba/render/film.h index fb3361e2..72674c4e 100644 --- a/include/mitsuba/render/film.h +++ b/include/mitsuba/render/film.h @@ -61,7 +61,7 @@ public: virtual void setDestinationFile(const fs::path &filename, uint32_t blockSize) = 0; /// Develop the film and write the result to the previously specified filename - virtual void develop() = 0; + virtual void develop(const Scene *scene, Float renderTime) = 0; /** * \brief Develop the contents of a subregion of the film and store diff --git a/include/mitsuba/render/renderjob.h b/include/mitsuba/render/renderjob.h index ba870552..edc4b7f0 100644 --- a/include/mitsuba/render/renderjob.h +++ b/include/mitsuba/render/renderjob.h @@ -75,7 +75,7 @@ public: bool interactive = false); /// Write out the current (partially rendered) image - inline void flush() { m_scene->flush(); } + inline void flush() { m_scene->flush(m_queue, this); } /// Cancel a running render job inline void cancel() { m_scene->cancel(); } diff --git a/include/mitsuba/render/renderqueue.h b/include/mitsuba/render/renderqueue.h index 3a9944a5..fd3ca3e4 100644 --- a/include/mitsuba/render/renderqueue.h +++ b/include/mitsuba/render/renderqueue.h @@ -76,6 +76,9 @@ public: /// Remove a (finished) render job from the queue void removeJob(RenderJob *thr, bool wasCancelled); + /// Return the amount of time spent rendering the given job (in seconds) + Float getRenderTime(const RenderJob *job) const; + /// Register a render listener void registerListener(RenderListener *listener); diff --git a/include/mitsuba/render/scene.h b/include/mitsuba/render/scene.h index 7302e5f6..fbc68ac0 100644 --- a/include/mitsuba/render/scene.h +++ b/include/mitsuba/render/scene.h @@ -133,7 +133,7 @@ public: int sceneResID, int sensorResID, int samplerResID); /// Write out the current (partially rendered) image - void flush(); + void flush(RenderQueue *queue, const RenderJob *job); /** * \brief Cancel a running rendering job diff --git a/src/films/hdrfilm.cpp b/src/films/hdrfilm.cpp index 57034d88..d71508c6 100644 --- a/src/films/hdrfilm.cpp +++ b/src/films/hdrfilm.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "banner.h" MTS_NAMESPACE_BEGIN @@ -235,20 +236,11 @@ public: std::vector keys = props.getPropertyNames(); for (size_t i=0; i args = tokenize(key.substr(5, key.length()-6), " ,"); - - if (args.size() != 2) - Log(EError, "Text command '%s' has an invalid number of arguments!", key.c_str()); - - Annotation annotation; - annotation.offset = Point2i(atoi(args[0].c_str()), atoi(args[1].c_str())); - annotation.text = props.getString(keys[i]); - m_annotations.push_back(annotation); - } + if ((boost::starts_with(key, "tag('") && boost::ends_with(key, "')")) || + (boost::starts_with(key, "text(") && boost::ends_with(key, ")"))) + props.markQueried(keys[i]); } m_storage = new ImageBlock(Bitmap::ESpectrumAlphaWeight, m_cropSize); @@ -350,7 +342,7 @@ public: m_destFile = destFile; } - void develop() { + void develop(const Scene *scene, Float renderTime) { Log(EDebug, "Developing film .."); ref bitmap = m_storage->getBitmap()->convert( @@ -368,23 +360,6 @@ public: } } - if (!m_annotations.empty()) { - ref font = new Font(Font::EBitstreamVeraMono14); - font->convert(bitmap->getPixelFormat(), bitmap->getComponentFormat(), 1.0f); - - for (size_t i=0; igetSize(text); - bitmap->fillRect(offset-Vector2i(4, 4), size + Vector2i(8, 8), Spectrum(0.0f)); - font->drawText(bitmap, offset, text); - } - } - - for (std::map::const_iterator it = m_tags.begin(); - it != m_tags.end(); ++it) - bitmap->setMetadataString(it->first, it->second); - fs::path filename = m_destFile; std::string extension = boost::to_lower_copy(filename.extension().string()); std::string properExtension = (m_fileFormat == Bitmap::EOpenEXR) ? ".exr" : ".rgbe"; @@ -394,13 +369,115 @@ public: Log(EInfo, "Writing image to \"%s\" ..", filename.string().c_str()); ref stream = new FileStream(filename, FileStream::ETruncWrite); + /* Attach the custom annotations */ + Properties &metadata = bitmap->getMetadata(); + std::vector keys = m_properties.getPropertyNames(); + ref font; + Float gamma = 1.0f; /// XXX + + for (size_t i=0; i args = tokenize(key.substr(6, key.length()-7), " ,"); + if (args.size() != 2) + Log(EError, "Label command '%s' has an invalid number of arguments!", key.c_str()); + char *end_ptr = NULL; + offset.x = strtol(args[0].c_str(), &end_ptr, 10); + if (*end_ptr != '\0') + Log(EError, "Label command '%s' has an invalid position argument!", key.c_str()); + offset.y = strtol(args[1].c_str(), &end_ptr, 10); + if (*end_ptr != '\0') + Log(EError, "Label command '%s' has an invalid position argument!", key.c_str()); + labelAnnotation = true; + + if (font == NULL) { + font = new Font(Font::EBitstreamVeraMono14); + font->convert(bitmap->getPixelFormat(), bitmap->getComponentFormat(), gamma); + } + } else { + continue; + } + + Properties::EPropertyType type = m_properties.getType(keys[i]); + if (type == Properties::EString) { + std::string value = m_properties.getString(keys[i]); + + while (true) { + char *strt; + if (!(strt = strchr((char *) value.c_str(), '$'))) + break; + + if (strncasecmp(strt, "$rendertime", 11) == 0) { + value.replace(strt-value.c_str(), 11, timeString(renderTime)); + } else if (strncasecmp(strt, "$memusage", 11) == 0) { + value.replace(strt-value.c_str(), 11, memString(getPrivateMemoryUsage())); + } else { + char *par1, *par2; + if (!(par1 = strchr(strt, '['))) + break; + if (!(par2 = strchr(par1, ']'))) + break; + + std::string propSource = value.substr(strt-value.c_str()+1, par1-strt-1); + std::string propKey = value.substr(par1-value.c_str()+1, par2-par1-1); + propSource.erase(std::remove_if(propSource.begin(), propSource.end(), ::isspace), propSource.end()); + propKey.erase(std::remove_if(propKey.begin(), propKey.end(), ::isspace), propKey.end()); + + if (!boost::starts_with(propKey, "'") || !boost::ends_with(propKey, "'")) + Log(EError, "Encountered invalid key '%s'", propKey.c_str()); + + propKey = propKey.substr(1, propKey.length()-2); + + const ConfigurableObject *source = NULL; + if (propSource == "film") + source = scene->getFilm(); + else if (propSource == "sampler") + source = scene->getSampler(); + else if (propSource == "sensor") + source = scene->getSensor(); + else if (propSource == "integrator") + source = scene->getIntegrator(); + else + Log(EError, "Unknown data source '%s' (must be film/sampler/sensor/integrator)", propSource.c_str()); + + std::string replacement; + if (propKey == "type") + replacement = source->getProperties().getPluginName(); + else + replacement = source->getProperties().getAsString(propKey); + + value.replace(strt-value.c_str(), par2-strt+1, replacement); + } + cout << value << endl; + } + if (labelAnnotation) { + Vector2i size = font->getSize(value); + bitmap->fillRect(offset-Vector2i(4, 4), size + Vector2i(8, 8), Spectrum(0.0f)); + font->drawText(bitmap, offset, value); + } else { + metadata.setString(key, value); + } + } else { + if (labelAnnotation) + Log(EError, "Only string-valued label annotations are supported!"); + metadata.copyAttribute(m_properties, keys[i], key); + } + } + /* Attach the log file to the image if this is requested */ Logger *logger = Thread::getThread()->getLogger(); std::string log; if (m_attachLog && logger->readLog(log)) { log += "\n\n"; log += Statistics::getInstance()->getStats(); - bitmap->setMetadataString("log", log); + metadata.setString("log", log); } bitmap->write(m_fileFormat, stream); @@ -451,9 +528,6 @@ protected: bool m_attachLog; fs::path m_destFile; ref m_storage; - - std::vector m_annotations; - std::map m_tags; }; MTS_IMPLEMENT_CLASS_S(HDRFilm, false, Film) diff --git a/src/films/ldrfilm.cpp b/src/films/ldrfilm.cpp index ea187fba..a2c3a62e 100644 --- a/src/films/ldrfilm.cpp +++ b/src/films/ldrfilm.cpp @@ -306,7 +306,7 @@ public: m_destFile = destFile; } - void develop() { + void develop(const Scene *scene, Float renderTime) { Log(EDebug, "Developing film .."); ref bitmap = m_storage->getBitmap(); diff --git a/src/films/mfilm.cpp b/src/films/mfilm.cpp index 7b0792e6..3f786e69 100644 --- a/src/films/mfilm.cpp +++ b/src/films/mfilm.cpp @@ -238,7 +238,7 @@ public: m_destFile = destFile; } - void develop() { + void develop(const Scene *scene, Float renderTime) { Log(EDebug, "Developing film .."); fs::path filename = m_destFile; diff --git a/src/films/tiledhdrfilm.cpp b/src/films/tiledhdrfilm.cpp index 6666a7ee..5476168c 100644 --- a/src/films/tiledhdrfilm.cpp +++ b/src/films/tiledhdrfilm.cpp @@ -156,7 +156,7 @@ public: } virtual ~TiledHDRFilm() { - develop(); + develop(NULL, 0); } void serialize(Stream *stream, InstanceManager *manager) const { @@ -167,7 +167,7 @@ public: void setDestinationFile(const fs::path &destFile, uint32_t blockSize) { if (m_output) - develop(); + develop(NULL, 0); Bitmap::EPixelFormat pixelFormat = m_pixelFormat; #if SPECTRUM_SAMPLES == 3 @@ -436,7 +436,7 @@ public: return false; /* Not supported by the tiled EXR film! */ } - void develop() { + void develop(const Scene *scene, Float renderTime) { if (m_output) { Log(EInfo, "Closing EXR file (%u tiles in total, peak memory usage: %u tiles)..", m_blocksH * m_blocksV, m_peakUsage); diff --git a/src/libcore/bitmap.cpp b/src/libcore/bitmap.cpp index 4c450d4d..770c054d 100644 --- a/src/libcore/bitmap.cpp +++ b/src/libcore/bitmap.cpp @@ -1355,7 +1355,7 @@ void Bitmap::writePNG(Stream *stream, int compression) const { png_text *text = NULL; Properties metadata(m_metadata); - metadata.setString("generated-by", "Mitsuba version " MTS_VERSION); + metadata.setString("generatedBy", "Mitsuba version " MTS_VERSION); std::vector keys = metadata.getPropertyNames(); std::vector values(keys.size()); @@ -1923,7 +1923,7 @@ void Bitmap::writeOpenEXR(Stream *stream, #endif Properties metadata(m_metadata); - metadata.setString("generated-by", "Mitsuba version " MTS_VERSION); + metadata.setString("generatedBy", "Mitsuba version " MTS_VERSION); std::vector keys = metadata.getPropertyNames(); diff --git a/src/libcore/fmtconv.cpp b/src/libcore/fmtconv.cpp index ae831528..7f8d3b73 100644 --- a/src/libcore/fmtconv.cpp +++ b/src/libcore/fmtconv.cpp @@ -156,7 +156,6 @@ template struct FormatConverterImpl : public FormatConverter { precomp[i] = convertScalar(detail::safe_cast(i), sourceGamma, NULL, multiplier, invDestGamma); } - const DestFormat zero = convertScalar(0.0f); const DestFormat one = convertScalar(1.0f); Spectrum spec; @@ -193,14 +192,14 @@ template struct FormatConverterImpl : public FormatConverter { case Bitmap::EXYZ: for (size_t i=0; i(*source++, sourceGamma, precomp, multiplier, invDestGamma); - *dest++ = zero; *dest++ = value; *dest++ = zero; + *dest++ = 0.950456f*value; *dest++ = value; *dest++ = 1.08875f*value; } break; case Bitmap::EXYZA: for (size_t i=0; i(*source++, sourceGamma, precomp, multiplier, invDestGamma); - *dest++ = zero; *dest++ = value; *dest++ = zero; *dest++ = one; + *dest++ = 0.950456f*value; *dest++ = value; *dest++ = 1.08875f*value; *dest++ = one; } break; @@ -271,7 +270,7 @@ template struct FormatConverterImpl : public FormatConverter { case Bitmap::EXYZ: for (size_t i=0; i(*source++, sourceGamma, precomp, multiplier, invDestGamma); - *dest++ = zero; *dest++ = value; *dest++ = zero; + *dest++ = 0.950456f*value; *dest++ = value; *dest++ = 1.08875f*value; source++; } break; @@ -279,7 +278,7 @@ template struct FormatConverterImpl : public FormatConverter { case Bitmap::EXYZA: for (size_t i=0; i(*source++, sourceGamma, precomp, multiplier, invDestGamma); - *dest++ = zero; *dest++ = value; *dest++ = zero; + *dest++ = 0.950456f*value; *dest++ = value; *dest++ = 1.08875f*value; *dest++ = convertScalar(*source++); } break; diff --git a/src/libcore/properties.cpp b/src/libcore/properties.cpp index b5922a88..ba4db6ec 100644 --- a/src/libcore/properties.cpp +++ b/src/libcore/properties.cpp @@ -246,6 +246,14 @@ void Properties::putPropertyNames(std::vector &results) const { results.push_back((*it).first); } +void Properties::copyAttribute(const Properties &properties, + const std::string &sourceName, const std::string &targetName) { + std::map::const_iterator it = properties.m_elements->find(sourceName); + if (it == properties.m_elements->end()) + SLog(EError, "copyAttribute(): Could not find parameter \"%s\"!", sourceName.c_str()); + m_elements->operator[](targetName) = it->second; +} + bool Properties::operator==(const Properties &p) const { if (m_pluginName != p.m_pluginName || m_id != p.m_id || m_elements->size() != p.m_elements->size()) return false; diff --git a/src/libcore/util.cpp b/src/libcore/util.cpp index 6ecbff78..0dffeccc 100644 --- a/src/libcore/util.cpp +++ b/src/libcore/util.cpp @@ -28,13 +28,15 @@ #if defined(__OSX__) #include -#elif defined(WIN32) +#include +#elif defined(__WINDOWS__) #include +#include #else #include #endif -#if defined(WIN32) +#if defined(__WINDOWS__) # include # include # include @@ -134,7 +136,7 @@ std::string memString(size_t size) { } void * __restrict allocAligned(size_t size) { -#if defined(WIN32) +#if defined(__WINDOWS__) return _aligned_malloc(size, L1_CACHE_LINE_SIZE); #elif defined(__OSX__) /* OSX malloc already returns 16-byte aligned data suitable @@ -146,7 +148,7 @@ void * __restrict allocAligned(size_t size) { } void freeAligned(void *ptr) { -#if defined(WIN32) +#if defined(__WINDOWS__) _aligned_free(ptr); #else free(ptr); @@ -154,7 +156,7 @@ void freeAligned(void *ptr) { } int getCoreCount() { -#if defined(WIN32) +#if defined(__WINDOWS__) SYSTEM_INFO sys_info; GetSystemInfo(&sys_info); return sys_info.dwNumberOfProcessors; @@ -169,7 +171,45 @@ int getCoreCount() { #endif } -#if defined(WIN32) +size_t getPrivateMemoryUsage() { +#if defined(__WINDOWS__) + PROCESS_MEMORY_COUNTERS_EX pmc; + GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)); + return (size_t) pmc.PrivateUsage; +#elif defined(__OSX__) + struct task_basic_info t_info; + mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT; + + if (task_info(mach_task_self(), TASK_BASIC_INFO, + (task_info_t)&t_info, &t_info_count) != KERN_SUCCESS) + return 0; + + /// XXX todo +#else + FILE* file = fopen("/proc/self/status", "r"); + if (!file) + return 0; + + char buffer[128]; + size_t result = 0; + while (fgets(buffer, sizeof(buffer), file) != NULL) { + if (strncmp(buffer, "VmRSS:", 6) != 0 && + strncmp(buffer, "VmSwap:", 7) != 0) + continue; + + char *line = buffer; + while (*line < '0' || *line > '9') + ++line; + line[strlen(line)-3] = '\0'; + result += (size_t) atoi(line) * 1024; + } + + fclose(file); + return result; +#endif +} + +#if defined(__WINDOWS__) std::string lastErrorText() { DWORD errCode = GetLastError(); char *errorText = NULL; @@ -192,7 +232,7 @@ std::string lastErrorText() { bool enableFPExceptions() { bool exceptionsWereEnabled = false; -#if defined(WIN32) +#if defined(__WINDOWS__) _clearfp(); uint32_t cw = _controlfp(0, 0); exceptionsWereEnabled = ~cw & (_EM_INVALID | _EM_ZERODIVIDE | _EM_OVERFLOW); @@ -211,7 +251,7 @@ bool enableFPExceptions() { bool disableFPExceptions() { bool exceptionsWereEnabled = false; -#if defined(WIN32) +#if defined(__WINDOWS__) _clearfp(); uint32_t cw = _controlfp(0, 0); exceptionsWereEnabled = ~cw & (_EM_INVALID | _EM_ZERODIVIDE | _EM_OVERFLOW); @@ -230,7 +270,7 @@ bool disableFPExceptions() { void restoreFPExceptions(bool oldState) { bool currentState; -#if defined(WIN32) +#if defined(__WINDOWS__) uint32_t cw = _controlfp(0, 0); currentState = ~cw & (_EM_INVALID | _EM_ZERODIVIDE | _EM_OVERFLOW); #elif defined(__OSX__) @@ -249,7 +289,7 @@ void restoreFPExceptions(bool oldState) { std::string getHostName() { char hostName[128]; if (gethostname(hostName, sizeof(hostName)) != 0) -#if defined(WIN32) +#if defined(__WINDOWS__) SLog(EError, "Could not retrieve the computer's host name: %s!", lastErrorText().c_str()); #else @@ -280,7 +320,7 @@ std::string getFQDN() { fqdn, NI_MAXHOST, NULL, 0, 0); if (retVal != 0) { freeaddrinfo(addrInfo); -#if defined(WIN32) +#if defined(__WINDOWS__) SLog(EWarn, "Could not retrieve the computer's fully " "qualified domain name: error %i!", WSAGetLastError()); #else @@ -304,7 +344,7 @@ std::string formatString(const char *fmt, ...) { char tmp[512]; va_list iterator; -#if defined(WIN32) +#if defined(__WINDOWS__) va_start(iterator, fmt); size_t size = _vscprintf(fmt, iterator) + 1; diff --git a/src/librender/renderqueue.cpp b/src/librender/renderqueue.cpp index 31eb2263..23c84a7a 100644 --- a/src/librender/renderqueue.cpp +++ b/src/librender/renderqueue.cpp @@ -54,20 +54,28 @@ void RenderQueue::unregisterListener(RenderListener *listener) { listener->decRef(); } +Float RenderQueue::getRenderTime(const RenderJob *job) const { + LockGuard lock(m_mutex); + std::map::const_iterator it = m_jobs.find(const_cast(job)); + if (it == m_jobs.end()) + Log(EError, "RenderQueue::getRenderJob() - job not found!"); + + unsigned int ms = m_timer->getMilliseconds() - it->second.startTime; + return ms / 1000.0f; +} + void RenderQueue::flush() { LockGuard lock(m_mutex); std::map::iterator it = m_jobs.begin(); - for (; it != m_jobs.end(); ++it) { + for (; it != m_jobs.end(); ++it) (*it).first->flush(); - } } void RenderQueue::removeJob(RenderJob *job, bool cancelled) { LockGuard lock(m_mutex); std::map::iterator it = m_jobs.find(job); - if (it == m_jobs.end()) { + if (it == m_jobs.end()) Log(EError, "RenderQueue::removeRenderJob() - job not found!"); - } JobRecord &rec = (*it).second; unsigned int ms = m_timer->getMilliseconds() - rec.startTime; Log(EInfo, "Render time: %s", timeString(ms/1000.0f, true).c_str()); diff --git a/src/librender/scene.cpp b/src/librender/scene.cpp index 21513cdf..0ebc510f 100644 --- a/src/librender/scene.cpp +++ b/src/librender/scene.cpp @@ -451,8 +451,8 @@ void Scene::cancel() { m_integrator->cancel(); } -void Scene::flush() { - m_sensor->getFilm()->develop(); +void Scene::flush(RenderQueue *queue, const RenderJob *job) { + m_sensor->getFilm()->develop(this, queue->getRenderTime(job)); } void Scene::setDestinationFile(const fs::path &name) { @@ -467,7 +467,7 @@ void Scene::postprocess(RenderQueue *queue, const RenderJob *job, int sceneResID, int sensorResID, int samplerResID) { m_integrator->postprocess(this, queue, job, sceneResID, sensorResID, samplerResID); - m_sensor->getFilm()->develop(); + m_sensor->getFilm()->develop(this, queue->getRenderTime(job)); } void Scene::addChild(const std::string &name, ConfigurableObject *child) { diff --git a/src/librender/scenehandler.cpp b/src/librender/scenehandler.cpp index 299ea7c2..777eae9d 100644 --- a/src/librender/scenehandler.cpp +++ b/src/librender/scenehandler.cpp @@ -196,7 +196,6 @@ void SceneHandler::startElement(const XMLCh* const xmlName, ParseContext context((name == "scene") ? NULL : &m_context.top()); - /* Convert attributes to ISO-8859-1 */ for (size_t i=0; i 0 && attrValue.find('$') != attrValue.npos) { @@ -208,7 +207,7 @@ void SceneHandler::startElement(const XMLCh* const xmlName, ++pos; } } - if (attrValue.find('$') != attrValue.npos) + if (attrValue.find('$') != attrValue.npos && attrValue.find('[') == attrValue.npos) XMLLog(EError, "The scene referenced an undefined parameter: \"%s\"", attrValue.c_str()); } From aaa16f129cdc4a8cce12b970b6dea4b11a28a52f Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 28 Jan 2013 16:48:23 -0500 Subject: [PATCH 12/18] added OSX support --- src/libcore/util.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/libcore/util.cpp b/src/libcore/util.cpp index 0dffeccc..15ae1d94 100644 --- a/src/libcore/util.cpp +++ b/src/libcore/util.cpp @@ -174,17 +174,17 @@ int getCoreCount() { size_t getPrivateMemoryUsage() { #if defined(__WINDOWS__) PROCESS_MEMORY_COUNTERS_EX pmc; - GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)); - return (size_t) pmc.PrivateUsage; + GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)); + return (size_t) pmc.PrivateUsage; /* Process-private memory usage (RAM + swap) */ #elif defined(__OSX__) - struct task_basic_info t_info; - mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT; + struct task_basic_info_64 t_info; + mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_64_COUNT; - if (task_info(mach_task_self(), TASK_BASIC_INFO, + if (task_info(mach_task_self(), TASK_BASIC_INFO_64, (task_info_t)&t_info, &t_info_count) != KERN_SUCCESS) return 0; - /// XXX todo + return (size_t) ti.resident_size; /* Not exactly what we want -- oh well.. */ #else FILE* file = fopen("/proc/self/status", "r"); if (!file) @@ -193,8 +193,8 @@ size_t getPrivateMemoryUsage() { char buffer[128]; size_t result = 0; while (fgets(buffer, sizeof(buffer), file) != NULL) { - if (strncmp(buffer, "VmRSS:", 6) != 0 && - strncmp(buffer, "VmSwap:", 7) != 0) + if (strncmp(buffer, "VmRSS:", 6) != 0 && /* Non-swapped physical memory specific to this process */ + strncmp(buffer, "VmSwap:", 7) != 0) /* Swapped memory specific to this process */ continue; char *line = buffer; From 89c1caed9bb9d64c2c724edfc7acbba43d3171a4 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 28 Jan 2013 17:04:12 -0500 Subject: [PATCH 13/18] added fancy annotations to ldrfilm --- src/films/CMakeLists.txt | 4 +- src/films/annotations.h | 137 +++++++++++++++++++++++++++++++++++++++ src/films/hdrfilm.cpp | 112 +------------------------------- src/films/ldrfilm.cpp | 46 ++----------- 4 files changed, 149 insertions(+), 150 deletions(-) create mode 100644 src/films/annotations.h diff --git a/src/films/CMakeLists.txt b/src/films/CMakeLists.txt index c9633ce8..22ff2e8e 100644 --- a/src/films/CMakeLists.txt +++ b/src/films/CMakeLists.txt @@ -8,8 +8,8 @@ macro(add_film) endmacro() add_film(mfilm mfilm.cpp) -add_film(ldrfilm ldrfilm.cpp banner.h MTS_HW) -add_film(hdrfilm hdrfilm.cpp banner.h MTS_HW) +add_film(ldrfilm ldrfilm.cpp annotations.h banner.h MTS_HW) +add_film(hdrfilm hdrfilm.cpp annotations.h banner.h MTS_HW) if (OPENEXR_FOUND) include_directories(${ILMBASE_INCLUDE_DIRS} ${OPENEXR_INCLUDE_DIRS}) diff --git a/src/films/annotations.h b/src/films/annotations.h new file mode 100644 index 00000000..6d041e03 --- /dev/null +++ b/src/films/annotations.h @@ -0,0 +1,137 @@ +/* + This file is part of Mitsuba, a physically based rendering system. + + Copyright (c) 2007-2012 by Wenzel Jakob and others. + + Mitsuba is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License Version 3 + as published by the Free Software Foundation. + + Mitsuba is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#pragma once +#if !defined(__ANNOTATIONS_H) +#define __ANNOTATIONS_H + +#include +#include + +MTS_NAMESPACE_BEGIN + +/** + * This function implements a parser for the 'label[]' and 'metadata[]' + * annotations supported by the ldrfilm and hdrfilm plugins + */ +void annotate(const Scene *scene, const Properties &properties, + Bitmap *bitmap, Float renderTime, Float gamma) { + /* Attach the custom annotations */ + Properties &metadata = bitmap->getMetadata(); + std::vector keys = properties.getPropertyNames(); + ref font; + + for (size_t i=0; i args = tokenize(key.substr(6, key.length()-7), " ,"); + if (args.size() != 2) + SLog(EError, "Label command '%s' has an invalid number of arguments!", key.c_str()); + char *end_ptr = NULL; + offset.x = strtol(args[0].c_str(), &end_ptr, 10); + if (*end_ptr != '\0') + SLog(EError, "Label command '%s' has an invalid position argument!", key.c_str()); + offset.y = strtol(args[1].c_str(), &end_ptr, 10); + if (*end_ptr != '\0') + SLog(EError, "Label command '%s' has an invalid position argument!", key.c_str()); + labelAnnotation = true; + + if (font == NULL) { + font = new Font(Font::EBitstreamVeraMono14); + font->convert(bitmap->getPixelFormat(), bitmap->getComponentFormat(), gamma); + } + } else { + continue; + } + + Properties::EPropertyType type = properties.getType(keys[i]); + if (type == Properties::EString) { + std::string value = properties.getString(keys[i]); + + while (true) { + char *strt; + if (!(strt = strchr((char *) value.c_str(), '$'))) + break; + + if (strncasecmp(strt, "$rendertime", 11) == 0) { + value.replace(strt-value.c_str(), 11, timeString(renderTime)); + } else if (strncasecmp(strt, "$memusage", 11) == 0) { + value.replace(strt-value.c_str(), 11, memString(getPrivateMemoryUsage())); + } else { + char *par1, *par2; + if (!(par1 = strchr(strt, '['))) + break; + if (!(par2 = strchr(par1, ']'))) + break; + + std::string propSource = value.substr(strt-value.c_str()+1, par1-strt-1); + std::string propKey = value.substr(par1-value.c_str()+1, par2-par1-1); + propSource.erase(std::remove_if(propSource.begin(), propSource.end(), ::isspace), propSource.end()); + propKey.erase(std::remove_if(propKey.begin(), propKey.end(), ::isspace), propKey.end()); + + if (!boost::starts_with(propKey, "'") || !boost::ends_with(propKey, "'")) + SLog(EError, "Encountered invalid key '%s'", propKey.c_str()); + + propKey = propKey.substr(1, propKey.length()-2); + + const ConfigurableObject *source = NULL; + if (propSource == "film") + source = scene->getFilm(); + else if (propSource == "sampler") + source = scene->getSampler(); + else if (propSource == "sensor") + source = scene->getSensor(); + else if (propSource == "integrator") + source = scene->getIntegrator(); + else + SLog(EError, "Unknown data source '%s' (must be film/sampler/sensor/integrator)", propSource.c_str()); + + std::string replacement; + if (propKey == "type") + replacement = source->getProperties().getPluginName(); + else + replacement = source->getProperties().getAsString(propKey); + + value.replace(strt-value.c_str(), par2-strt+1, replacement); + } + } + if (labelAnnotation) { + Vector2i size = font->getSize(value); + bitmap->fillRect(offset-Vector2i(4, 4), size + Vector2i(8, 8), Spectrum(0.0f)); + font->drawText(bitmap, offset, value); + } else { + metadata.setString(key, value); + } + } else { + if (labelAnnotation) + SLog(EError, "Only string-valued label annotations are supported!"); + metadata.copyAttribute(properties, keys[i], key); + } + } +} + +MTS_NAMESPACE_END + +#endif /* __ANNOTATIONS_H */ diff --git a/src/films/hdrfilm.cpp b/src/films/hdrfilm.cpp index d71508c6..8bb01a3c 100644 --- a/src/films/hdrfilm.cpp +++ b/src/films/hdrfilm.cpp @@ -20,10 +20,9 @@ #include #include #include -#include #include -#include #include "banner.h" +#include "annotations.h" MTS_NAMESPACE_BEGIN @@ -369,107 +368,7 @@ public: Log(EInfo, "Writing image to \"%s\" ..", filename.string().c_str()); ref stream = new FileStream(filename, FileStream::ETruncWrite); - /* Attach the custom annotations */ - Properties &metadata = bitmap->getMetadata(); - std::vector keys = m_properties.getPropertyNames(); - ref font; - Float gamma = 1.0f; /// XXX - - for (size_t i=0; i args = tokenize(key.substr(6, key.length()-7), " ,"); - if (args.size() != 2) - Log(EError, "Label command '%s' has an invalid number of arguments!", key.c_str()); - char *end_ptr = NULL; - offset.x = strtol(args[0].c_str(), &end_ptr, 10); - if (*end_ptr != '\0') - Log(EError, "Label command '%s' has an invalid position argument!", key.c_str()); - offset.y = strtol(args[1].c_str(), &end_ptr, 10); - if (*end_ptr != '\0') - Log(EError, "Label command '%s' has an invalid position argument!", key.c_str()); - labelAnnotation = true; - - if (font == NULL) { - font = new Font(Font::EBitstreamVeraMono14); - font->convert(bitmap->getPixelFormat(), bitmap->getComponentFormat(), gamma); - } - } else { - continue; - } - - Properties::EPropertyType type = m_properties.getType(keys[i]); - if (type == Properties::EString) { - std::string value = m_properties.getString(keys[i]); - - while (true) { - char *strt; - if (!(strt = strchr((char *) value.c_str(), '$'))) - break; - - if (strncasecmp(strt, "$rendertime", 11) == 0) { - value.replace(strt-value.c_str(), 11, timeString(renderTime)); - } else if (strncasecmp(strt, "$memusage", 11) == 0) { - value.replace(strt-value.c_str(), 11, memString(getPrivateMemoryUsage())); - } else { - char *par1, *par2; - if (!(par1 = strchr(strt, '['))) - break; - if (!(par2 = strchr(par1, ']'))) - break; - - std::string propSource = value.substr(strt-value.c_str()+1, par1-strt-1); - std::string propKey = value.substr(par1-value.c_str()+1, par2-par1-1); - propSource.erase(std::remove_if(propSource.begin(), propSource.end(), ::isspace), propSource.end()); - propKey.erase(std::remove_if(propKey.begin(), propKey.end(), ::isspace), propKey.end()); - - if (!boost::starts_with(propKey, "'") || !boost::ends_with(propKey, "'")) - Log(EError, "Encountered invalid key '%s'", propKey.c_str()); - - propKey = propKey.substr(1, propKey.length()-2); - - const ConfigurableObject *source = NULL; - if (propSource == "film") - source = scene->getFilm(); - else if (propSource == "sampler") - source = scene->getSampler(); - else if (propSource == "sensor") - source = scene->getSensor(); - else if (propSource == "integrator") - source = scene->getIntegrator(); - else - Log(EError, "Unknown data source '%s' (must be film/sampler/sensor/integrator)", propSource.c_str()); - - std::string replacement; - if (propKey == "type") - replacement = source->getProperties().getPluginName(); - else - replacement = source->getProperties().getAsString(propKey); - - value.replace(strt-value.c_str(), par2-strt+1, replacement); - } - cout << value << endl; - } - if (labelAnnotation) { - Vector2i size = font->getSize(value); - bitmap->fillRect(offset-Vector2i(4, 4), size + Vector2i(8, 8), Spectrum(0.0f)); - font->drawText(bitmap, offset, value); - } else { - metadata.setString(key, value); - } - } else { - if (labelAnnotation) - Log(EError, "Only string-valued label annotations are supported!"); - metadata.copyAttribute(m_properties, keys[i], key); - } - } + annotate(scene, m_properties, bitmap, renderTime, 1.0f); /* Attach the log file to the image if this is requested */ Logger *logger = Thread::getThread()->getLogger(); @@ -477,7 +376,7 @@ public: if (m_attachLog && logger->readLog(log)) { log += "\n\n"; log += Statistics::getInstance()->getStats(); - metadata.setString("log", log); + bitmap->setMetadataString("log", log); } bitmap->write(m_fileFormat, stream); @@ -516,11 +415,6 @@ public: MTS_DECLARE_CLASS() protected: - struct Annotation { - Point2i offset; - std::string text; - }; - Bitmap::EFileFormat m_fileFormat; Bitmap::EPixelFormat m_pixelFormat; Bitmap::EComponentFormat m_componentFormat; diff --git a/src/films/ldrfilm.cpp b/src/films/ldrfilm.cpp index a2c3a62e..55ad5cab 100644 --- a/src/films/ldrfilm.cpp +++ b/src/films/ldrfilm.cpp @@ -20,9 +20,9 @@ #include #include #include -#include #include #include "banner.h" +#include "annotations.h" MTS_NAMESPACE_BEGIN @@ -185,20 +185,11 @@ public: std::vector keys = props.getPropertyNames(); for (size_t i=0; i args = tokenize(key.substr(5, key.length()-6), " ,"); - - if (args.size() != 2) - Log(EError, "Text command '%s' has an invalid number of arguments!", key.c_str()); - - Annotation annotation; - annotation.offset = Point2i(atoi(args[0].c_str()), atoi(args[1].c_str())); - annotation.text = props.getString(keys[i]); - m_annotations.push_back(annotation); - } + if ((boost::starts_with(key, "tag('") && boost::ends_with(key, "')")) || + (boost::starts_with(key, "text(") && boost::ends_with(key, ")"))) + props.markQueried(keys[i]); } m_storage = new ImageBlock(Bitmap::ESpectrumAlphaWeight, m_cropSize); @@ -338,23 +329,6 @@ public: } } - if (!m_annotations.empty()) { - ref font = new Font(Font::EBitstreamVeraMono14); - font->convert(bitmap->getPixelFormat(), bitmap->getComponentFormat(), m_gamma); - - for (size_t i=0; igetSize(text); - bitmap->fillRect(offset-Vector2i(4, 4), size + Vector2i(8, 8), Spectrum(0.0f)); - font->drawText(bitmap, offset, text); - } - } - - for (std::map::const_iterator it = m_tags.begin(); - it != m_tags.end(); ++it) - bitmap->setMetadataString(it->first, it->second); - fs::path filename = m_destFile; std::string extension = boost::to_lower_copy(filename.extension().string()); std::string expectedExtension; @@ -370,6 +344,8 @@ public: Log(EInfo, "Writing image to \"%s\" ..", filename.string().c_str()); ref stream = new FileStream(filename, FileStream::ETruncWrite); + annotate(scene, m_properties, bitmap, renderTime, m_gamma); + bitmap->write(m_fileFormat, stream); } @@ -415,11 +391,6 @@ public: MTS_DECLARE_CLASS() protected: - struct Annotation { - Point2i offset; - std::string text; - }; - Bitmap::EFileFormat m_fileFormat; Bitmap::EPixelFormat m_pixelFormat; bool m_hasBanner; @@ -428,9 +399,6 @@ protected: ref m_storage; ETonemapMethod m_tonemapMethod; Float m_exposure, m_reinhardKey, m_reinhardBurn; - - std::vector m_annotations; - std::map m_tags; }; MTS_IMPLEMENT_CLASS_S(LDRFilm, false, Film) From 3f638065cfe56c335a2a9953fb580b7e513ad0e5 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 28 Jan 2013 18:50:43 -0500 Subject: [PATCH 14/18] fixed osx typo --- src/libcore/util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcore/util.cpp b/src/libcore/util.cpp index 15ae1d94..17214c62 100644 --- a/src/libcore/util.cpp +++ b/src/libcore/util.cpp @@ -184,7 +184,7 @@ size_t getPrivateMemoryUsage() { (task_info_t)&t_info, &t_info_count) != KERN_SUCCESS) return 0; - return (size_t) ti.resident_size; /* Not exactly what we want -- oh well.. */ + return (size_t) t_info.resident_size; /* Not exactly what we want -- oh well.. */ #else FILE* file = fopen("/proc/self/status", "r"); if (!file) From 3fb80bc0ce09364b1b803d6ee501951b20d4304b Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 28 Jan 2013 19:24:59 -0500 Subject: [PATCH 15/18] moved animation track class to libcore --- include/mitsuba/{render => core}/track.h | 10 +++++----- include/mitsuba/render/emitter.h | 2 +- src/converter/collada.cpp | 2 +- src/emitters/collimated.cpp | 2 +- src/emitters/point.cpp | 2 +- src/libcore/CMakeLists.txt | 2 ++ src/libcore/properties.cpp | 2 +- src/{librender => libcore}/track.cpp | 2 +- src/librender/CMakeLists.txt | 2 -- src/librender/emitter.cpp | 2 +- src/librender/sensor.cpp | 2 +- src/sensors/fluencemeter.cpp | 2 +- src/sensors/orthographic.cpp | 2 +- src/sensors/perspective.cpp | 2 +- src/sensors/radiancemeter.cpp | 2 +- src/sensors/spherical.cpp | 2 +- src/sensors/telecentric.cpp | 2 +- src/sensors/thinlens.cpp | 2 +- 18 files changed, 22 insertions(+), 22 deletions(-) rename include/mitsuba/{render => core}/track.h (98%) rename src/{librender => libcore}/track.cpp (99%) diff --git a/include/mitsuba/render/track.h b/include/mitsuba/core/track.h similarity index 98% rename from include/mitsuba/render/track.h rename to include/mitsuba/core/track.h index 4c418c58..b996ec9b 100644 --- a/include/mitsuba/render/track.h +++ b/include/mitsuba/core/track.h @@ -17,8 +17,8 @@ */ #pragma once -#if !defined(__MITSUBA_RENDER_TRACK_H_) -#define __MITSUBA_RENDER_TRACK_H_ +#if !defined(__MITSUBA_CORE_TRACK_H_) +#define __MITSUBA_CORE_TRACK_H_ #include #include @@ -32,7 +32,7 @@ template class AnimationTrack; * \brief Base class of animation tracks * \ingroup librender */ -class MTS_EXPORT_RENDER AbstractAnimationTrack : public Object { +class MTS_EXPORT_CORE AbstractAnimationTrack : public Object { template friend class AnimationTrack; public: enum EType { @@ -321,7 +321,7 @@ template<> inline void AnimationTrack::serialize(Stream *stream, con * \brief Animated transformation with an underlying keyframe representation * \ingroup librender */ -class MTS_EXPORT_RENDER AnimatedTransform : public Object { +class MTS_EXPORT_CORE AnimatedTransform : public Object { private: /// Internal functor used by \ref eval() and \ref SimpleCache struct MTS_EXPORT_RENDER TransformFunctor { @@ -484,4 +484,4 @@ private: MTS_NAMESPACE_END -#endif /* __MITSUBA_RENDER_TRACK_H_ */ +#endif /* __MITSUBA_CORE_TRACK_H_ */ diff --git a/include/mitsuba/render/emitter.h b/include/mitsuba/render/emitter.h index 4e30be11..27908b50 100644 --- a/include/mitsuba/render/emitter.h +++ b/include/mitsuba/render/emitter.h @@ -21,7 +21,7 @@ #define __MITSUBA_RENDER_EMITTER_H_ #include -#include +#include #include #include #include diff --git a/src/converter/collada.cpp b/src/converter/collada.cpp index 56409067..c67214b7 100644 --- a/src/converter/collada.cpp +++ b/src/converter/collada.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/emitters/collimated.cpp b/src/emitters/collimated.cpp index 1ba51fdb..da278a2f 100644 --- a/src/emitters/collimated.cpp +++ b/src/emitters/collimated.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include MTS_NAMESPACE_BEGIN diff --git a/src/emitters/point.cpp b/src/emitters/point.cpp index 7edc7d73..098b41d0 100644 --- a/src/emitters/point.cpp +++ b/src/emitters/point.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include diff --git a/src/libcore/CMakeLists.txt b/src/libcore/CMakeLists.txt index 91b0c081..5a36927a 100644 --- a/src/libcore/CMakeLists.txt +++ b/src/libcore/CMakeLists.txt @@ -70,6 +70,7 @@ set(HDRS ${INCLUDE_DIR}/thread.h ${INCLUDE_DIR}/timer.h ${INCLUDE_DIR}/tls.h + ${INCLUDE_DIR}/track.h ${INCLUDE_DIR}/transform.h ${INCLUDE_DIR}/triangle.h ${INCLUDE_DIR}/util.h @@ -118,6 +119,7 @@ set(SRCS thread.cpp timer.cpp tls.cpp + track.cpp transform.cpp triangle.cpp util.cpp diff --git a/src/libcore/properties.cpp b/src/libcore/properties.cpp index ef6e5da6..f06555e5 100644 --- a/src/libcore/properties.cpp +++ b/src/libcore/properties.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include /* Keep the boost::variant includes outside of properties.h, since they noticeably add to the overall compile times */ diff --git a/src/librender/track.cpp b/src/libcore/track.cpp similarity index 99% rename from src/librender/track.cpp rename to src/libcore/track.cpp index 47f1b3c1..1e8a64a6 100644 --- a/src/librender/track.cpp +++ b/src/libcore/track.cpp @@ -1,4 +1,4 @@ -#include +#include #include MTS_NAMESPACE_BEGIN diff --git a/src/librender/CMakeLists.txt b/src/librender/CMakeLists.txt index e28a966e..3121bf79 100644 --- a/src/librender/CMakeLists.txt +++ b/src/librender/CMakeLists.txt @@ -42,7 +42,6 @@ set(HDRS ${INCLUDE_DIR}/subsurface.h ${INCLUDE_DIR}/testcase.h ${INCLUDE_DIR}/texture.h - ${INCLUDE_DIR}/track.h ${INCLUDE_DIR}/triaccel.h ${INCLUDE_DIR}/triaccel_sse.h ${INCLUDE_DIR}/trimesh.h @@ -82,7 +81,6 @@ set(SRCS subsurface.cpp testcase.cpp texture.cpp - track.cpp trimesh.cpp util.cpp volume.cpp diff --git a/src/librender/emitter.cpp b/src/librender/emitter.cpp index 9668246d..a0dfc2a6 100644 --- a/src/librender/emitter.cpp +++ b/src/librender/emitter.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include MTS_NAMESPACE_BEGIN diff --git a/src/librender/sensor.cpp b/src/librender/sensor.cpp index 552c98d2..138470f9 100644 --- a/src/librender/sensor.cpp +++ b/src/librender/sensor.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include diff --git a/src/sensors/fluencemeter.cpp b/src/sensors/fluencemeter.cpp index cf0dca9e..5a403d69 100644 --- a/src/sensors/fluencemeter.cpp +++ b/src/sensors/fluencemeter.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include MTS_NAMESPACE_BEGIN diff --git a/src/sensors/orthographic.cpp b/src/sensors/orthographic.cpp index 8e885bc7..8568065f 100644 --- a/src/sensors/orthographic.cpp +++ b/src/sensors/orthographic.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include diff --git a/src/sensors/perspective.cpp b/src/sensors/perspective.cpp index 9e09290b..8bf0b8b3 100644 --- a/src/sensors/perspective.cpp +++ b/src/sensors/perspective.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include MTS_NAMESPACE_BEGIN diff --git a/src/sensors/radiancemeter.cpp b/src/sensors/radiancemeter.cpp index 73c94644..b969eef8 100644 --- a/src/sensors/radiancemeter.cpp +++ b/src/sensors/radiancemeter.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include MTS_NAMESPACE_BEGIN diff --git a/src/sensors/spherical.cpp b/src/sensors/spherical.cpp index 65c19717..0e3421d2 100644 --- a/src/sensors/spherical.cpp +++ b/src/sensors/spherical.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include MTS_NAMESPACE_BEGIN diff --git a/src/sensors/telecentric.cpp b/src/sensors/telecentric.cpp index 77441d78..5b9ac447 100644 --- a/src/sensors/telecentric.cpp +++ b/src/sensors/telecentric.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include diff --git a/src/sensors/thinlens.cpp b/src/sensors/thinlens.cpp index fce964b8..e9891b6a 100644 --- a/src/sensors/thinlens.cpp +++ b/src/sensors/thinlens.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include #include From ddde0f655ca0a3ce9ab73e9723152ac165737907 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 28 Jan 2013 19:25:56 -0500 Subject: [PATCH 16/18] finished track.cpp move --- src/libcore/SConscript | 2 +- src/librender/SConscript | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libcore/SConscript b/src/libcore/SConscript index 4673b927..bc403cd8 100644 --- a/src/libcore/SConscript +++ b/src/libcore/SConscript @@ -34,7 +34,7 @@ libcore_objects = [ 'mstream.cpp', 'sched.cpp', 'sched_remote.cpp', 'sshstream.cpp', 'zstream.cpp', 'shvector.cpp', 'fresolver.cpp', 'rfilter.cpp', 'quad.cpp', 'mmap.cpp', 'chisquare.cpp', 'warp.cpp', 'vmf.cpp', - 'tls.cpp', 'ssemath.cpp', 'spline.cpp' + 'tls.cpp', 'ssemath.cpp', 'spline.cpp', 'track.cpp' ] # Add some platform-specific components diff --git a/src/librender/SConscript b/src/librender/SConscript index fc049f2f..baeb6126 100644 --- a/src/librender/SConscript +++ b/src/librender/SConscript @@ -17,7 +17,7 @@ librender = renderEnv.SharedLibrary('mitsuba-render', [ 'shape.cpp', 'trimesh.cpp', 'sampler.cpp', 'util.cpp', 'irrcache.cpp', 'testcase.cpp', 'photonmap.cpp', 'gatherproc.cpp', 'volume.cpp', 'vpl.cpp', 'shader.cpp', 'scenehandler.cpp', 'intersection.cpp', - 'track.cpp', 'common.cpp', 'phase.cpp', 'noise.cpp', 'photon.cpp' + 'common.cpp', 'phase.cpp', 'noise.cpp', 'photon.cpp' ]) if sys.platform == "darwin": From 511568c846b3c2fa8535544a5c7c6d18acb5a066 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 28 Jan 2013 19:56:45 -0500 Subject: [PATCH 17/18] decided to rename 'atransform' back to 'transform'. added renderings by Geoffrey Irving to demonstrate the instance plugin (with permission) --- doc/format.tex | 4 ++-- doc/images/shape_instance_fractal_bot.jpg | Bin 0 -> 334028 bytes doc/images/shape_instance_fractal_top.jpg | Bin 0 -> 191511 bytes doc/macros.sty | 2 +- doc/main.tex | 2 +- include/mitsuba/render/scenehandler.h | 2 +- src/emitters/collimated.cpp | 2 +- src/emitters/directional.cpp | 2 +- src/emitters/point.cpp | 2 +- src/emitters/sky.cpp | 2 +- src/emitters/spot.cpp | 2 +- src/libcore/properties.cpp | 6 +++--- src/librender/scenehandler.cpp | 6 +++--- src/mtsgui/save.cpp | 2 +- src/sensors/fluencemeter.cpp | 2 +- src/sensors/orthographic.cpp | 2 +- src/sensors/perspective.cpp | 2 +- src/sensors/radiancemeter.cpp | 2 +- src/sensors/spherical.cpp | 2 +- src/sensors/telecentric.cpp | 2 +- src/sensors/thinlens.cpp | 2 +- src/shapes/cylinder.cpp | 2 +- src/shapes/disk.cpp | 2 +- src/shapes/instance.cpp | 24 +++++++++++++++++++--- src/shapes/obj.cpp | 2 +- src/shapes/ply.cpp | 2 +- src/shapes/rectangle.cpp | 2 +- src/shapes/serialized.cpp | 2 +- src/shapes/shapegroup.cpp | 12 ++--------- src/shapes/sphere.cpp | 2 +- 30 files changed, 54 insertions(+), 44 deletions(-) create mode 100644 doc/images/shape_instance_fractal_bot.jpg create mode 100644 doc/images/shape_instance_fractal_top.jpg diff --git a/doc/format.tex b/doc/format.tex index 0680da42..d837adde 100644 --- a/doc/format.tex +++ b/doc/format.tex @@ -292,7 +292,7 @@ and \emph{animated transformations} as parameters. The latter is useful to render scenes involving motion blur. The syntax used to specify these is slightly different: \begin{xml} - + .. chained list of transformations as discussed above .. @@ -302,7 +302,7 @@ is slightly different: .. additional transformations (optional) .. - + \end{xml} Mitsuba then decomposes each transformation into a scale, translation, and rotation component and interpolates\footnote{Using linear interpolation diff --git a/doc/images/shape_instance_fractal_bot.jpg b/doc/images/shape_instance_fractal_bot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c136c9a7230bc3c683e6595f7d8824d978cad046 GIT binary patch literal 334028 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
#)4S54Q|n2(GN<1pc%l4&y$<``+W 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�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�^?^ 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ß`8#njyZZnSrn{L8pg@l~-ae%th`5;l7vUpo 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%0D`dnX+{0udIxHk@ps=y0 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 z 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 Properties::getAnimatedTransform(const std::string const Transform *result2 = boost::get(&it->second.data); if (!result1 && !result2) - SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " + SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " "complete property record is :\n%s", name.c_str(), toString().c_str()); it->second.queried = true; @@ -118,7 +118,7 @@ ref Properties::getAnimatedTransform(const std::string const Transform *result2 = boost::get(&it->second.data); if (!result1 && !result2) - SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " + SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " "complete property record is :\n%s", name.c_str(), toString().c_str()); it->second.queried = true; @@ -138,7 +138,7 @@ ref Properties::getAnimatedTransform(const std::string const Transform *result2 = boost::get(&it->second.data); if (!result1 && !result2) - SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " + SLog(EError, "The property \"%s\" has the wrong type (expected or ). The " "complete property record is :\n%s", name.c_str(), toString().c_str()); it->second.queried = true; diff --git a/src/librender/scenehandler.cpp b/src/librender/scenehandler.cpp index 0b60793a..7c77e75b 100644 --- a/src/librender/scenehandler.cpp +++ b/src/librender/scenehandler.cpp @@ -103,7 +103,7 @@ SceneHandler::SceneHandler(const SAXParser *parser, m_tags["blackbody"] = TagEntry(EBlackBody, (Class *) NULL); m_tags["spectrum"] = TagEntry(ESpectrum, (Class *) NULL); m_tags["transform"] = TagEntry(ETransform, (Class *) NULL); - m_tags["atransform"] = TagEntry(EATransform, (Class *) NULL); + m_tags["animation"] = TagEntry(EAnimation, (Class *) NULL); m_tags["include"] = TagEntry(EInclude, (Class *) NULL); m_tags["alias"] = TagEntry(EAlias, (Class *) NULL); @@ -254,7 +254,7 @@ void SceneHandler::startElement(const XMLCh* const xmlName, case ETransform: m_transform = Transform(); break; - case EATransform: { + case EAnimation: { m_animatedTransform = new AnimatedTransform(); ref translation = new VectorTrack(VectorTrack::ETranslationXYZ); ref rotation = new QuatTrack(VectorTrack::ERotationQuat); @@ -606,7 +606,7 @@ void SceneHandler::endElement(const XMLCh* const xmlName) { } break; - case EATransform: { + case EAnimation: { m_animatedTransform->sortAndSimplify(); context.parent->properties.setAnimatedTransform( context.attributes["name"], m_animatedTransform); diff --git a/src/mtsgui/save.cpp b/src/mtsgui/save.cpp index fe51b38d..3be9f008 100644 --- a/src/mtsgui/save.cpp +++ b/src/mtsgui/save.cpp @@ -84,7 +84,7 @@ static void setProperties(QDomDocument &doc, QDomElement &element, std::set times; trafo->collectKeyframes(times); - property = doc.createElement("atransform"); + property = doc.createElement("animation"); for (std::set::iterator it2 = times.begin(); it2 != times.end(); ++it2) { const Matrix4x4 &matrix = trafo->eval(*it2).getMatrix(); diff --git a/src/sensors/fluencemeter.cpp b/src/sensors/fluencemeter.cpp index 5a403d69..6bd5a084 100644 --- a/src/sensors/fluencemeter.cpp +++ b/src/sensors/fluencemeter.cpp @@ -26,7 +26,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{fluencemeter}{Fluence meter} * \order{7} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional sensor-to-world transformation. * \default{none (i.e. sensor space $=$ world space)} * } diff --git a/src/sensors/orthographic.cpp b/src/sensors/orthographic.cpp index 8568065f..ae9504d9 100644 --- a/src/sensors/orthographic.cpp +++ b/src/sensors/orthographic.cpp @@ -27,7 +27,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{orthographic}{Orthographic camera} * \order{3} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional camera-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/sensors/perspective.cpp b/src/sensors/perspective.cpp index 8bf0b8b3..7184b912 100644 --- a/src/sensors/perspective.cpp +++ b/src/sensors/perspective.cpp @@ -26,7 +26,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{perspective}{Perspective pinhole camera} * \order{1} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional camera-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/sensors/radiancemeter.cpp b/src/sensors/radiancemeter.cpp index b969eef8..ae1bd44b 100644 --- a/src/sensors/radiancemeter.cpp +++ b/src/sensors/radiancemeter.cpp @@ -25,7 +25,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{radiancemeter}{Radiance meter} * \order{6} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional sensor-to-world transformation. * \default{none (i.e. sensor space $=$ world space)} * } diff --git a/src/sensors/spherical.cpp b/src/sensors/spherical.cpp index 0e3421d2..e39c2143 100644 --- a/src/sensors/spherical.cpp +++ b/src/sensors/spherical.cpp @@ -25,7 +25,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{spherical}{Spherical camera} * \order{5} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional camera-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/sensors/telecentric.cpp b/src/sensors/telecentric.cpp index 5b9ac447..02bf566d 100644 --- a/src/sensors/telecentric.cpp +++ b/src/sensors/telecentric.cpp @@ -27,7 +27,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{telecentric}{Telecentric lens camera} * \order{4} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional sensor-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/sensors/thinlens.cpp b/src/sensors/thinlens.cpp index e9891b6a..7e52b87e 100644 --- a/src/sensors/thinlens.cpp +++ b/src/sensors/thinlens.cpp @@ -29,7 +29,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{thinlens}{Perspective camera with a thin lens} * \order{2} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional camera-to-world transformation. * \default{none (i.e. camera space $=$ world space)} * } diff --git a/src/shapes/cylinder.cpp b/src/shapes/cylinder.cpp index 1d4fa95a..133de92d 100644 --- a/src/shapes/cylinder.cpp +++ b/src/shapes/cylinder.cpp @@ -43,7 +43,7 @@ MTS_NAMESPACE_BEGIN * Is the cylinder inverted, i.e. should the normal vectors * be flipped? \default{\code{false}, i.e. the normals point outside} * } - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/disk.cpp b/src/shapes/disk.cpp index a7445f95..7d575ebc 100644 --- a/src/shapes/disk.cpp +++ b/src/shapes/disk.cpp @@ -31,7 +31,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{disk}{Disk intersection primitive} * \order{4} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies a linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/instance.cpp b/src/shapes/instance.cpp index 32f81525..3604d319 100644 --- a/src/shapes/instance.cpp +++ b/src/shapes/instance.cpp @@ -25,15 +25,33 @@ MTS_NAMESPACE_BEGIN * \parameters{ * \parameter{\Unnamed}{\ShapeGroup}{A reference to a * shape group that should be instantiated} - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional linear instance-to-world transformation. * \default{none (i.e. instance space $=$ world space)} * } * } + * \renderings{ + * \rendering{Surface viewed from the top}{shape_instance_fractal_top} + * \rendering{Surface viewed from the bottom}{shape_instance_fractal_bot} + * \caption{ + * A visualization of a fractal surface by Irving and Segerman. + * (a 2D Gospel curve developed up to level 5 along the third + * dimension). This scene makes use of instancing to replicate + * similar structures to cheaply render a structure that effectively + * consists of several hundred millions of triangles. + * } + * } * * This plugin implements a geometry instance used to efficiently replicate - * geometry many times. For details, please refer to the \pluginref{shapegroup} - * plugin. + * geometry many times. For details on how to create instances, refer to + * the \pluginref{shapegroup} plugin. + * \remarks{ + * \item Note that it is \emph{not} possible to assign a different + * material to each instance --- the material assignment specified within + * the shape group is the one that matters. + * \item Shape groups cannot be used to replicate shapes with + * attached emitters, sensors, or subsurface scattering models. + * } */ Instance::Instance(const Properties &props) : Shape(props) { diff --git a/src/shapes/obj.cpp b/src/shapes/obj.cpp index 015384e4..de49cb77 100644 --- a/src/shapes/obj.cpp +++ b/src/shapes/obj.cpp @@ -55,7 +55,7 @@ MTS_NAMESPACE_BEGIN * this convention. \default{\code{true}, i.e. flip them to get the * correct coordinates}. * } - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/ply.cpp b/src/shapes/ply.cpp index 75fca394..67324782 100644 --- a/src/shapes/ply.cpp +++ b/src/shapes/ply.cpp @@ -62,7 +62,7 @@ MTS_NAMESPACE_BEGIN * Optional flag to flip all normals. \default{\code{false}, i.e. * the normals are left unchanged}. * } - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/rectangle.cpp b/src/shapes/rectangle.cpp index e95a5e4f..73c2cad8 100644 --- a/src/shapes/rectangle.cpp +++ b/src/shapes/rectangle.cpp @@ -30,7 +30,7 @@ MTS_NAMESPACE_BEGIN /*!\plugin{rectangle}{Rectangle intersection primitive} * \order{3} * \parameters{ - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies a linear object-to-world transformation. * It is allowed to use non-uniform scaling, but no shear. * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/serialized.cpp b/src/shapes/serialized.cpp index bdfced9e..7f932074 100644 --- a/src/shapes/serialized.cpp +++ b/src/shapes/serialized.cpp @@ -55,7 +55,7 @@ MTS_NAMESPACE_BEGIN * Optional flag to flip all normals. \default{\code{false}, i.e. * the normals are left unchanged}. * } - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} diff --git a/src/shapes/shapegroup.cpp b/src/shapes/shapegroup.cpp index c9e60c73..6dff5e9d 100644 --- a/src/shapes/shapegroup.cpp +++ b/src/shapes/shapegroup.cpp @@ -34,9 +34,9 @@ MTS_NAMESPACE_BEGIN * so that they can efficiently be referenced many times using the * \pluginref{instance} plugin. This is useful for rendering things like * forests, where only a few distinct types of trees have to be kept - * in memory. + * in memory. An example is given below: * - + * \vspace{5mm} * \begin{xml}[caption={An example of geometry instancing}, label=lst:instancing] * * @@ -68,14 +68,6 @@ MTS_NAMESPACE_BEGIN * * * \end{xml} - * \vspace{-2mm} - * \remarks{ - * \item Note that it is not possible to assign a different - * material to each instance --- the material assignment specified within - * the shape group is the one that matters. - * \item Shape groups can not be used to replicate shapes with - * attached emitters, sensors, or subsurface scattering models. - * } */ ShapeGroup::ShapeGroup(const Properties &props) : Shape(props) { diff --git a/src/shapes/sphere.cpp b/src/shapes/sphere.cpp index 6c8c0ad4..d35ad11c 100644 --- a/src/shapes/sphere.cpp +++ b/src/shapes/sphere.cpp @@ -37,7 +37,7 @@ MTS_NAMESPACE_BEGIN * \parameter{radius}{\Float}{ * Radius of the sphere in object-space units \default{1} * } - * \parameter{toWorld}{\Transform\Or\ATransform}{ + * \parameter{toWorld}{\Transform\Or\Animation}{ * Specifies an optional linear object-to-world transformation. * Note that non-uniform scales are not permitted! * \default{none (i.e. object space $=$ world space)} From 62851d28a4ea79ff3b0ba25cde22363b1d3e8404 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Mon, 28 Jan 2013 19:59:46 -0500 Subject: [PATCH 18/18] needed to update xml schema, too --- data/schema/scene.xsd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/schema/scene.xsd b/data/schema/scene.xsd index 912259d1..18de916b 100644 --- a/data/schema/scene.xsd +++ b/data/schema/scene.xsd @@ -43,7 +43,7 @@ - + @@ -326,7 +326,7 @@ - +

Iv|_i- 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%0D|Ui6)Nyn?h6q2>=wQj!aE&QJP;Nq?c_utM<^h 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 z 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
$d2fGyGal=y?vgG$0dtF!W!cMGV$i0$ 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μ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
3mt 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 F`2U}alL`O; literal 0 HcmV?d00001 diff --git a/doc/images/shape_instance_fractal_top.jpg b/doc/images/shape_instance_fractal_top.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e827827c837afec87109c863aedbaec0c7d8def6 GIT binary patch literal 191511 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