flutter_3d_objects
library
Functions

absoluteError(dynamic calculated, dynamic correct)
→ double

Returns absolute error between
calculated
and correct
.
The type of calculated
and correct
must match and can
be any vector, matrix, or quaternion.

buildPlaneVectors(Vector3 planeNormal, Vector3 u, Vector3 v)
→ void

Sets
u
and v
to be two vectors orthogonal to each other and
planeNormal
.

catmullRom(double edge0, double edge1, double edge2, double edge3, double amount)
→ double

Do a catmull rom spline interpolation with
edge0
, edge1
, edge2
and
edge3
by amount
.

cross2(Vector2 x, Vector2 y)
→ double

2D cross product. vec2 x vec2.

cross2A(double x, Vector2 y, Vector2 out)
→ void

2D cross product. double x vec2.

cross2B(Vector2 x, double y, Vector2 out)
→ void

2D cross product. vec2 x double.

cross3(Vector3 x, Vector3 y, Vector3 out)
→ void

3D Cross product.

degrees(double radians)
→ double

Convert
radians
to degrees.

dot2(Vector2 x, Vector2 y)
→ double

2D dot product.

dot3(Vector3 x, Vector3 y)
→ double

3D dot product.

fromColor(Color color)
→ Vector3

Convert Color to Vector3

getImagePixels(Image image)
→ Future<Uint32List>


loadImageFromAsset(String fileName, {bool isAsset = true})
→ Future<Image>

load an image from asset

loadMtl(String fileName, {bool isAsset = true})
→ Future<Map<String, Material>>

Loading material from Material Library File (.mtl).
Reference：http://paulbourke.net/dataformats/mtl/

loadObj(String fileName, bool normalized, {bool isAsset = true})
→ Future<List<Mesh>>

Loading mesh from Wavefront's object file (.obj).
Reference：http://paulbourke.net/dataformats/obj/

loadTexture(Material? material, String basePath, {bool isAsset = true})
→ Future<MapEntry<String, Image>?>

load texture from asset

makeFrustumMatrix(double left, double right, double bottom, double top, double near, double far)
→ Matrix4

Constructs a new OpenGL perspective projection matrix.

makeInfiniteMatrix(double fovYRadians, double aspectRatio, double zNear)
→ Matrix4

Constructs a new OpenGL infinite projection matrix.

makeOrthographicMatrix(double left, double right, double bottom, double top, double near, double far)
→ Matrix4

Constructs a new OpenGL orthographic projection matrix.

makePerspectiveMatrix(double fovYRadians, double aspectRatio, double zNear, double zFar)
→ Matrix4

Constructs a new OpenGL perspective projection matrix.

makePlaneProjection(Vector3 planeNormal, Vector3 planePoint)
→ Matrix4

Returns a transformation matrix that transforms points onto
the plane specified with
planeNormal
and planePoint
.

makePlaneReflection(Vector3 planeNormal, Vector3 planePoint)
→ Matrix4

Returns a transformation matrix that transforms points by reflecting
them through the plane specified with
planeNormal
and planePoint
.

makeViewMatrix(Vector3 cameraPosition, Vector3 cameraFocusPosition, Vector3 upDirection)
→ Matrix4

Constructs a new OpenGL view matrix.

mix(double min, double max, double a)
→ double

Interpolate between
min
and max
with the amount of a
using a linear
interpolation. The computation is equivalent to the GLSL function mix.

normalizeMesh(List<Mesh> meshes)
→ List<Mesh>

Scale the model size to 1

normalVector(Vector3 a, Vector3 b, Vector3 c)
→ Vector3

Calculate normal vector

packingTexture(List<Mesh> meshes)
→ Future<Image?>

Reference：https://observablehq.com/@mourner/simplerectanglepacking

pickRay(Matrix4 cameraMatrix, num viewportX, num viewportWidth, num viewportY, num viewportHeight, num pickX, num pickY, Vector3 rayNear, Vector3 rayFar)
→ bool

On success,
rayNear
and rayFar
are the points where
the screen space pickX
, pickY
intersect with the near and far
planes respectively.

radians(double degrees)
→ double

Convert
degrees
to radians.

relativeError(dynamic calculated, dynamic correct)
→ double

Returns relative error between
calculated
and correct
.
The type of calculated
and correct
must match and can
be any vector, matrix, or quaternion.

setFrustumMatrix(Matrix4 perspectiveMatrix, double left, double right, double bottom, double top, double near, double far)
→ void

Constructs an OpenGL perspective projection matrix in
perspectiveMatrix
.

setInfiniteMatrix(Matrix4 infiniteMatrix, double fovYRadians, double aspectRatio, double zNear)
→ void

Constructs an OpenGL infinite projection matrix in
infiniteMatrix
.
fovYRadians
specifies the field of view angle, in radians, in the y
direction.
aspectRatio
specifies the aspect ratio that determines the field of view
in the x direction. The aspect ratio of x (width) to y (height).
zNear
specifies the distance from the viewer to the near plane
(always positive).

setModelMatrix(Matrix4 modelMatrix, Vector3 forwardDirection, Vector3 upDirection, double tx, double ty, double tz)
→ void

Constructs an OpenGL model matrix in
modelMatrix
.
Model transformation is the inverse of the view transformation.
Model transformation is also known as "camera" transformation.
Model matrix is commonly used to compute a object location/orientation into
the full modelview stack.

setOrthographicMatrix(Matrix4 orthographicMatrix, double left, double right, double bottom, double top, double near, double far)
→ void

Constructs an OpenGL orthographic projection matrix in
orthographicMatrix
.

setPerspectiveMatrix(Matrix4 perspectiveMatrix, double fovYRadians, double aspectRatio, double zNear, double zFar)
→ void

Constructs an OpenGL perspective projection matrix in
perspectiveMatrix
.

setRotationMatrix(Matrix4 rotationMatrix, Vector3 forwardDirection, Vector3 upDirection)
→ void

Constructs a rotation matrix in
rotationMatrix
.

setViewMatrix(Matrix4 viewMatrix, Vector3 cameraPosition, Vector3 cameraFocusPosition, Vector3 upDirection)
→ void

Constructs an OpenGL view matrix in
viewMatrix
.
View transformation is the inverse of the model transformation.
View matrix is commonly used to compute the camera location/orientation into
the full modelview stack.

smoothStep(double edge0, double edge1, double amount)
→ double

Do a smooth step (hermite interpolation) interpolation with
edge0
and
edge1
by amount
. The computation is equivalent to the GLSL function
smoothstep.

toColor(Vector3 v, [double opacity = 1.0])
→ Color

Convert Vector3 to Color

toVector2(Offset value)
→ Vector2

Convert Offset to Vector2

unproject(Matrix4 cameraMatrix, num viewportX, num viewportWidth, num viewportY, num viewportHeight, num pickX, num pickY, num pickZ, Vector3 pickWorld)
→ bool

On success, Sets
pickWorld
to be the world space position of
the screen space pickX
, pickY
, and pickZ
.