- void CalculateTangentArray(const Dali::Vector<Vector3>& vertex,
- const Dali::Vector<Vector2>& texcoord,
- Dali::Vector<TriIndex>& triangle,
- Dali::Vector<Vector3>& normal,
- Dali::Vector<Vector3>& tangent);
-
- void CenterAndScale(bool center, Dali::Vector<Vector3>& points);
-
-
- void CreateGeometryArray(Dali::Vector<Vertex> & vertices,
- Dali::Vector<Vector2> & textures,
- Dali::Vector<VertexExt> & verticesExt,
- Dali::Vector<unsigned short> & indices);
+ /**
+ * @brief Calculates normals for each point on a per-face basis.
+ *
+ * There are multiple normals per point, each corresponding to the normal of a face connecting to the point.
+ *
+ * @param[in] vertices The vertices of the object.
+ * @param[in, out] triangles The triangles that form the faces. The normals of each triangle will be updated.
+ * @param[in, out] normals The normals to be calculated.
+ */
+ void CalculateHardFaceNormals( const Dali::Vector<Vector3>& vertices,
+ Dali::Vector<TriIndex>& triangles,
+ Dali::Vector<Vector3>& normals );
+
+ /**
+ * @brief Calculates smoothed normals for each point.
+ *
+ * There is one normal per point, an average of the connecting faces.
+ *
+ * @param[in] vertices The vertices of the object.
+ * @param[in, out] triangles The triangles that form the faces. The normals of each triangle will be updated.
+ * @param[in, out] normals The normals to be calculated.
+ */
+ void CalculateSoftFaceNormals( const Dali::Vector<Vector3>& vertices,
+ Dali::Vector<TriIndex>& triangles,
+ Dali::Vector<Vector3>& normals );
+
+ /**
+ * @brief Calculates tangents and bitangents for each point of the object.
+ *
+ * These are calculated using the object's points, texture coordinates and normals, so these must be initialised first.
+ */
+ void CalculateTangentFrame();
+
+ void CenterAndScale( bool center, Dali::Vector<Vector3>& points );
+
+ /**
+ * @brief Using the data loaded from the file, create arrays of data to be used in creating the geometry.
+ *
+ * @param[in] vertices The vertices of the object.
+ * @param[in] textures The texture coordinates of the object.
+ * @param[in] verticesExt Extension to vertices, storing tangents and bitangents.
+ * @param[in] indices Indices of corresponding values to match triangles to their respective data.
+ * @param[in] useSoftNormals Indicates whether we should average the normals at each point to smooth the surface or not.
+ */
+ void CreateGeometryArray( Dali::Vector<Vertex> & vertices,
+ Dali::Vector<Vector2> & textures,
+ Dali::Vector<VertexExt> & verticesExt,
+ Dali::Vector<unsigned short> & indices,
+ bool useSoftNormals );