Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1417 - trunk/Model/Primitives


Chronological Thread 
  • 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.

Top of page