http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/ray_linn/GCC-4.7.0-with-ada/mingw-w64-gcc-4.7.0-runtime-2.0.1-static-ada-20120330.7z/download Other builds may also work but due to the constantly changing nature of the compiler this cannot be guaranteed. I often had to change compilers while building the libraries and this one is the one that did the job for most of them. This first support is experimental and considered "advanced". To enable pass -DWITH_MINGW64 during cmake configuration. Also make sure to extract the compiler on C:/MinGW and that MinGW/bin is in your path. To build check out lib/mingw64. Initially the support is lacking until I get every library compiled correctly. For now you should disable WITH_CYCLES(sorry, I know some people are dying to do benchmarks, but still a few libs to go), WITH_IMAGE_OPENEXR, WITH_OPENCOLLADA, WITH_LIBMV and WITH_CODEC_FFMPEG(links but hangs on startup). Still the tools are working, the memory limit is increased and due to the experimental nature of the setup, full optimization with SSE2 is available, which makes the build quite fast. Also the compiler and especially, the linker are way faster than regular MinGW. The wiki docs have also updated. Happy testing!
146 lines
5.3 KiB
C
146 lines
5.3 KiB
C
/*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
#ifndef __BKE_ARMATURE_H__
|
|
#define __BKE_ARMATURE_H__
|
|
|
|
/** \file BKE_armature.h
|
|
* \ingroup bke
|
|
* \since March 2001
|
|
* \author nzc
|
|
*/
|
|
|
|
struct Bone;
|
|
struct Main;
|
|
struct bArmature;
|
|
struct bPose;
|
|
struct bPoseChannel;
|
|
struct bConstraint;
|
|
struct Scene;
|
|
struct Object;
|
|
struct MDeformVert;
|
|
struct Mesh;
|
|
struct PoseTree;
|
|
struct ListBase;
|
|
|
|
typedef struct PoseTarget
|
|
{
|
|
struct PoseTarget *next, *prev;
|
|
|
|
struct bConstraint *con; /* the constrait of this target */
|
|
int tip; /* index of tip pchan in PoseTree */
|
|
} PoseTarget;
|
|
|
|
typedef struct PoseTree
|
|
{
|
|
struct PoseTree *next, *prev;
|
|
|
|
int type; /* type of IK that this serves (CONSTRAINT_TYPE_KINEMATIC or ..._SPLINEIK) */
|
|
int totchannel; /* number of pose channels */
|
|
|
|
struct ListBase targets; /* list of targets of the tree */
|
|
struct bPoseChannel **pchan; /* array of pose channels */
|
|
int *parent; /* and their parents */
|
|
|
|
float (*basis_change)[3][3]; /* basis change result from solver */
|
|
int iterations; /* iterations from the constraint */
|
|
int stretch; /* disable stretching */
|
|
} PoseTree;
|
|
|
|
/* Core armature functionality */
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct bArmature *add_armature(const char *name);
|
|
struct bArmature *get_armature(struct Object *ob);
|
|
void free_bonelist (struct ListBase *lb);
|
|
void free_armature(struct bArmature *arm);
|
|
void make_local_armature(struct bArmature *arm);
|
|
struct bArmature *copy_armature(struct bArmature *arm);
|
|
|
|
/* Bounding box. */
|
|
struct BoundBox *BKE_armature_get_bb(struct Object *ob);
|
|
|
|
int bone_autoside_name (char name[64], int strip_number, short axis, float head, float tail);
|
|
|
|
struct Bone *get_named_bone (struct bArmature *arm, const char *name);
|
|
|
|
float distfactor_to_bone(const float vec[3], const float b1[3], const float b2[3], float r1, float r2, float rdist);
|
|
|
|
void where_is_armature (struct bArmature *arm);
|
|
void where_is_armature_bone(struct Bone *bone, struct Bone *prevbone);
|
|
void armature_rebuild_pose(struct Object *ob, struct bArmature *arm);
|
|
void where_is_pose (struct Scene *scene, struct Object *ob);
|
|
void where_is_pose_bone(struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan, float ctime, int do_extra);
|
|
void where_is_pose_bone_tail(struct bPoseChannel *pchan);
|
|
|
|
/* get_objectspace_bone_matrix has to be removed still */
|
|
void get_objectspace_bone_matrix (struct Bone* bone, float M_accumulatedMatrix[][4], int root, int posed);
|
|
void vec_roll_to_mat3(const float vec[3], const float roll, float mat[][3]);
|
|
void mat3_to_vec_roll(float mat[][3], float *vec, float *roll);
|
|
|
|
int get_selected_defgroups(struct Object *ob, char *defbase_sel, int defbase_len);
|
|
|
|
/* Common Conversions Between Co-ordinate Spaces */
|
|
void armature_mat_world_to_pose(struct Object *ob, float inmat[][4], float outmat[][4]);
|
|
void armature_loc_world_to_pose(struct Object *ob, const float inloc[3], float outloc[3]);
|
|
void armature_mat_pose_to_bone(struct bPoseChannel *pchan, float inmat[][4], float outmat[][4]);
|
|
void armature_loc_pose_to_bone(struct bPoseChannel *pchan, const float inloc[3], float outloc[3]);
|
|
void armature_mat_bone_to_pose(struct bPoseChannel *pchan, float inmat[][4], float outmat[][4]);
|
|
void armature_mat_pose_to_delta(float delta_mat[][4], float pose_mat[][4], float arm_mat[][4]);
|
|
|
|
void armature_mat_pose_to_bone_ex(struct Object *ob, struct bPoseChannel *pchan, float inmat[][4], float outmat[][4]);
|
|
|
|
void pchan_mat3_to_rot(struct bPoseChannel *pchan, float mat[][3], short use_compat);
|
|
void pchan_apply_mat4(struct bPoseChannel *pchan, float mat[][4], short use_comat);
|
|
void pchan_to_mat4(struct bPoseChannel *pchan, float chan_mat[4][4]);
|
|
void pchan_calc_mat(struct bPoseChannel *pchan);
|
|
|
|
/* Get the "pchan to pose" transform matrix. These matrices apply the effects of
|
|
* HINGE/NO_SCALE/NO_LOCAL_LOCATION options over the pchan loc/rot/scale transformations. */
|
|
void pchan_to_pose_mat(struct bPoseChannel *pchan, float rotscale_mat[][4], float loc_mat[][4]);
|
|
|
|
/* Rotation Mode Conversions - Used for PoseChannels + Objects... */
|
|
void BKE_rotMode_change_values(float quat[4], float eul[3], float axis[3], float *angle, short oldMode, short newMode);
|
|
|
|
/* B-Bone support */
|
|
typedef struct Mat4 {
|
|
float mat[4][4];
|
|
} Mat4;
|
|
|
|
Mat4 *b_bone_spline_setup(struct bPoseChannel *pchan, int rest);
|
|
|
|
/* like EBONE_VISIBLE */
|
|
#define PBONE_VISIBLE(arm, bone) (((bone)->layer & (arm)->layer) && !((bone)->flag & BONE_HIDDEN_P))
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|