|
From: <axl...@us...> - 2009-05-16 00:37:16
|
Revision: 250
http://hgengine.svn.sourceforge.net/hgengine/?rev=250&view=rev
Author: axlecrusher
Date: 2009-05-16 00:37:07 +0000 (Sat, 16 May 2009)
Log Message:
-----------
add billboard (needs debugging)
Added Paths:
-----------
Mercury2/src/BillboardNode.cpp
Mercury2/src/BillboardNode.h
Added: Mercury2/src/BillboardNode.cpp
===================================================================
--- Mercury2/src/BillboardNode.cpp (rev 0)
+++ Mercury2/src/BillboardNode.cpp 2009-05-16 00:37:07 UTC (rev 250)
@@ -0,0 +1,66 @@
+#include <BillboardNode.h>
+#include <MercuryVertex.h>
+#include <Viewport.h>
+
+REGISTER_NODE_TYPE(Billboard);
+
+MercuryMatrix Billboard::ManipulateMatrix(const MercuryMatrix& matrix)
+{
+ MercuryMatrix m = matrix;
+// m.Transpose();
+
+ //manually transposed
+ MercuryVertex center(m[3][0], m[3][1], m[3][2]);
+
+ const MercuryVertex& eye = FRUSTUM->GetEye();
+ const MercuryVector& lookAt = FRUSTUM->GetLookAt();
+
+ MercuryVector v = (eye - center).Normalize();
+ MercuryVector up = lookAt.CrossProduct( v );
+ float angleCos = lookAt.DotProduct(v);
+
+ if ((angleCos < 0.99990) && (angleCos > -0.9999))
+ {
+ float f = ACOS(angleCos)*RADDEG;
+// printf("billboard!!! %f %f %f\n",up[0]*f, up[1]*f, up[2]*f );
+
+// MercuryMatrix m;
+// m.RotateXYZ(ACOS(angleCosine)*RADDEG,upAux[0], upAux[1], upAux[2])
+// glRotatef(ACOS(angleCosine)*RADDEG,upAux[0], upAux[1], upAux[2]);
+ m.RotateXYZ(up[0]*f, up[1]*f, up[2]*f);
+ }
+// m.Transpose();
+ return m;
+}
+
+/****************************************************************************
+ * Copyright (C) 2009 by Joshua Allen *
+ * *
+ * *
+ * All rights reserved. *
+ * *
+ * Redistribution and use in source and binary forms, with or without *
+ * modification, are permitted provided that the following conditions *
+ * are met: *
+ * * Redistributions of source code must retain the above copyright *
+ * notice, this list of conditions and the following disclaimer. *
+ * * Redistributions in binary form must reproduce the above *
+ * copyright notice, this list of conditions and the following *
+ * disclaimer in the documentation and/or other materials provided *
+ * with the distribution. *
+ * * Neither the name of the Mercury Engine nor the names of its *
+ * contributors may be used to endorse or promote products derived *
+ * from this software without specific prior written permission. *
+ * *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR *
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT *
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
+ ***************************************************************************/
Added: Mercury2/src/BillboardNode.h
===================================================================
--- Mercury2/src/BillboardNode.h (rev 0)
+++ Mercury2/src/BillboardNode.h 2009-05-16 00:37:07 UTC (rev 250)
@@ -0,0 +1,47 @@
+#ifndef BILLBOARDNODE_H
+#define BILLBOARDNODE_H
+
+#include <RenderableNode.h>
+
+class Billboard : public RenderableNode
+{
+ public:
+ virtual MercuryMatrix ManipulateMatrix(const MercuryMatrix& matrix);
+
+ private:
+};
+
+#endif
+
+
+/****************************************************************************
+ * Copyright (C) 2009 by Joshua Allen *
+ * *
+ * *
+ * All rights reserved. *
+ * *
+ * Redistribution and use in source and binary forms, with or without *
+ * modification, are permitted provided that the following conditions *
+ * are met: *
+ * * Redistributions of source code must retain the above copyright *
+ * notice, this list of conditions and the following disclaimer. *
+ * * Redistributions in binary form must reproduce the above *
+ * copyright notice, this list of conditions and the following *
+ * disclaimer in the documentation and/or other materials provided *
+ * with the distribution. *
+ * * Neither the name of the Mercury Engine nor the names of its *
+ * contributors may be used to endorse or promote products derived *
+ * from this software without specific prior written permission. *
+ * *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR *
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT *
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
+ ***************************************************************************/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|