- v[0][0] = origin[0] + frame->down * up[0] + frame->left * right[0];
- v[0][1] = origin[1] + frame->down * up[1] + frame->left * right[1];
- v[0][2] = origin[2] + frame->down * up[2] + frame->left * right[2];
- v[1][0] = origin[0] + frame->up * up[0] + frame->left * right[0];
- v[1][1] = origin[1] + frame->up * up[1] + frame->left * right[1];
- v[1][2] = origin[2] + frame->up * up[2] + frame->left * right[2];
- v[2][0] = origin[0] + frame->up * up[0] + frame->right * right[0];
- v[2][1] = origin[1] + frame->up * up[1] + frame->right * right[1];
- v[2][2] = origin[2] + frame->up * up[2] + frame->right * right[2];
- v[3][0] = origin[0] + frame->down * up[0] + frame->right * right[0];
- v[3][1] = origin[1] + frame->down * up[1] + frame->right * right[1];
- v[3][2] = origin[2] + frame->down * up[2] + frame->right * right[2];
+ // FIXME: negate left and right in loader
+ v[0][0] = origin[0] + frame->down * up[0] - frame->left * left[0];
+ v[0][1] = origin[1] + frame->down * up[1] - frame->left * left[1];
+ v[0][2] = origin[2] + frame->down * up[2] - frame->left * left[2];
+ v[1][0] = origin[0] + frame->up * up[0] - frame->left * left[0];
+ v[1][1] = origin[1] + frame->up * up[1] - frame->left * left[1];
+ v[1][2] = origin[2] + frame->up * up[2] - frame->left * left[2];
+ v[2][0] = origin[0] + frame->up * up[0] - frame->right * left[0];
+ v[2][1] = origin[1] + frame->up * up[1] - frame->right * left[1];
+ v[2][2] = origin[2] + frame->up * up[2] - frame->right * left[2];
+ v[3][0] = origin[0] + frame->down * up[0] - frame->right * left[0];
+ v[3][1] = origin[1] + frame->down * up[1] - frame->right * left[1];
+ v[3][2] = origin[2] + frame->down * up[2] - frame->right * left[2];