Text archives Help
- From: leenak@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r1417 - trunk/Model/Primitives
- Date: Wed, 13 Jun 2007 12:41:01 -0600 (MDT)
Author: leenak
Date: Wed Jun 13 12:41:00 2007
New Revision: 1417
Added:
trunk/Model/Primitives/BumpPrimitive.cc
trunk/Model/Primitives/BumpPrimitive.h
Log:
added Bump Mapping files to Manta
Added: trunk/Model/Primitives/BumpPrimitive.cc
==============================================================================
--- (empty file)
+++ trunk/Model/Primitives/BumpPrimitive.cc Wed Jun 13 12:41:00 2007
@@ -0,0 +1,105 @@
+#include <Model/Primitives/BumpPrimitive.h>
+#include <Interface/RayPacket.h>
+#include <Core/Geometry/BBox.h>
+#include <Core/Geometry/Vector.h>
+#include <Core/Math/Noise.h>
+#include <Core/Math/MiscMath.h>
+#include <Core/Math/Trig.h>
+
+using namespace SCIRun;
+using namespace Manta;
+using namespace std;
+
+BumpPrimitive::BumpPrimitive()
+{
+
+}
+
+BumpPrimitive::BumpPrimitive(PrimitiveCommon* obj_, Material* mat, Real
const k1_, Real const k2_, int const octaves_, Real const lacunarity_, Real
const gain_ )
+ : bumpobject(obj_), PrimitiveCommon(mat), k1(k1_), k2(k2_), octaves(
octaves_ ), lacunarity( lacunarity_ ), gain( gain_ )
+{
+
+}
+
+BumpPrimitive::~BumpPrimitive()
+{
+
+}
+
+
+void BumpPrimitive::computeBounds(const PreprocessContext& context, BBox&
bbox) const
+{
+ bumpobject->computeBounds(context, bbox);
+}
+
+void BumpPrimitive::intersect(const RenderContext& context, RayPacket& rays)
const
+{
+
+ RayPacketData raydata;
+ RayPacket object_rays(raydata, RayPacket::UnknownShape, rays.begin(),
rays.end(), rays.getDepth(), rays.getAllFlags());
+
+ for(int i = rays.begin();i<rays.end();i++){
+ object_rays.setRay(i, rays.getRay(i));
+ object_rays.resetHit(i, rays.getMinT(i));
+ }
+ bumpobject->intersect(context, object_rays);
+
+ for(int i=rays.begin(); i<rays.end(); i++)
+ {
+
+ if(object_rays.wasHit(i))
+ {
+
+ rays.hit(i, object_rays.getMinT(i),
object_rays.getHitMaterial(i), object_rays.getHitPrimitive(i),
object_rays.getHitTexCoordMapper(i));
+ rays.setHitPrimitive(i, const_cast<BumpPrimitive
*>(this));
+ rays.setHitMaterial(i, this->getMaterial());
+
+ }
+
+ }
+}
+
+void BumpPrimitive::computeNormal(const RenderContext& context, RayPacket&
rays) const
+{
+ bumpobject->computeNormal(context, rays);
+
+ for(int i=rays.begin(); i<rays.end(); i++)
+ {
+ Vector nm = rays.getNormal(i);
+ Vector T= k1*rays.getHitPosition(i);
+ nm=nm+(k2*VectorFBM( T, octaves, lacunarity, gain ));
+ nm=nm.normal();
+ rays.setNormal(i, nm);
+ }
+
+}
+
+Real BumpPrimitive::getk1(void) const
+{
+ return k1;
+}
+
+Real BumpPrimitive::getk2(void) const
+{
+ return k2;
+}
+
+int BumpPrimitive::getOctaves(void) const
+{
+ return octaves;
+}
+
+Real BumpPrimitive::getLacunarity(void) const
+{
+ return lacunarity;
+}
+
+Real BumpPrimitive::getGain(void) const
+{
+ return gain;
+}
+
+PrimitiveCommon * BumpPrimitive::getObject(void) const
+{
+ return bumpobject;
+}
Added: trunk/Model/Primitives/BumpPrimitive.h
==============================================================================
--- (empty file)
+++ trunk/Model/Primitives/BumpPrimitive.h Wed Jun 13 12:41:00 2007
@@ -0,0 +1,54 @@
+/*
+ * BumpPrimitive.h
+ *
+ *
+ * Created by Leena Kora on 6/5/07.
+ * Copyright 2007 __MyCompanyName__. All rights reserved.
+ *
+ */
+
+/*
+This primitive class takes an object and a material with k1, k2, lacunarity,
gain, octaves values and bump maps that object with the material given as an
argument
+*/
+
+#ifndef Manta_Model_BumpPrimitive_h
+#define Manta_Model_BumpPrimitive_h
+
+#include <Model/Primitives/PrimitiveCommon.h>
+#include <Interface/RayPacket.h>
+#include <Core/Geometry/BBox.h>
+
+namespace Manta
+{
+
+ class BumpPrimitive : public PrimitiveCommon
+ {
+
+ public:
+ BumpPrimitive();
+ BumpPrimitive(PrimitiveCommon* obj_, Material* mat_,
Real const k1_, Real const k2_, int const octaves_, Real const lacunarity_,
Real const gain_ );
+ virtual ~BumpPrimitive();
+
+ virtual void computeBounds(const PreprocessContext&
context, BBox& bbox) const;
+ virtual void intersect(const RenderContext& context,
RayPacket& rays) const;
+ virtual void computeNormal(const RenderContext&
context, RayPacket& rays) const;
+
+ Real getk1(void) const;
+ Real getk2(void) const;
+ int getOctaves(void) const;
+ Real getLacunarity(void) const;
+ Real getGain(void) const;
+ PrimitiveCommon* getObject(void) const;
+
+ private:
+ PrimitiveCommon* bumpobject;
+ Real k1;
+ Real k2;
+ int octaves;
+ Real lacunarity;
+ Real gain;
+
+ };
+}
+
+#endif
- [MANTA] r1417 - trunk/Model/Primitives, leenak, 06/13/2007
Archive powered by MHonArc 2.6.16.