diff --git a/NifExport/Coll.cpp b/NifExport/Coll.cpp
index 1498b0b4e4e19781fe398c699a8265e3a7a127c4..2a99a67a696685cc3e6d28c8dbd7d6212c84d764 100755
--- a/NifExport/Coll.cpp
+++ b/NifExport/Coll.cpp
@@ -153,7 +153,7 @@ void Exporter::addFace(Triangles &tris, vector<Vector3> &verts, vector<Vector3>
 
 Exporter::Result Exporter::exportCollision(NiNodeRef &parent, INode *node)
 {
-	if (isHandled(node))
+	if (isHandled(node) || (node->IsHidden() && !mExportHidden))
 		return Exporter::Skip;
 
    ProgressUpdate(Collision, FormatText("'%s' Collision", node->GetName()));
@@ -734,8 +734,8 @@ bhkShapeRef	Exporter::makeConvexShape(INode *node, Object* obj, Matrix3& tm)
 }
 
 Exporter::Result Exporter::scanForCollision(INode *node)
-{   
-   if (NULL == node) 
+{ 
+	if (node == NULL || (node->IsHidden() && !mExportHidden))
       return Exporter::Skip;
    // Get the bhk RigidBody modifier if available and then get the picked node.
    if (Modifier * mod = GetbhkCollisionModifier(node)){
@@ -766,7 +766,7 @@ Exporter::Result Exporter::scanForCollision(INode *node)
 		   for (int i = 0;i < pblock2->Count(PB_MESHLIST); i++) {
 			   INode *tnode = NULL;
 			   pblock2->GetValue(PB_MESHLIST,0,tnode,FOREVER,i);	
-			   if (tnode != NULL) {
+			   if (tnode != NULL && (!tnode->IsHidden() || mExportHidden)) {
 				   mCollisionNodes.insert(tnode);
 				   markAsHandled(tnode); // dont process collision since the list will 
 			   }
@@ -857,7 +857,7 @@ bhkShapeRef Exporter::makeListShape(INode *node, Matrix3& tm, bhkRigidBodyRef bo
 		for (int i = 0; i < nBlocks; i++) {
 			INode *tnode = NULL;
 			pblock2->GetValue(PB_MESHLIST,0,tnode,FOREVER,i);	
-			if (tnode != NULL)
+			if (tnode != NULL && (!tnode->IsHidden() || mExportHidden))
 			{
 				bhkShapeRef subshape = makeCollisionShape(tnode, tm, body);
 				if (subshape)