Files
workinf_Blender_Wasm/blender-5.2.0/source/blender/blenkernel/BKE_uvproject.h
2026-08-12 04:47:48 -04:00

61 lines
1.7 KiB
C++

/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/** \file
* \ingroup bke
*/
namespace blender {
struct Object;
struct ProjCameraInfo;
/**
* Create UV info from the camera, needs to be freed.
*
* \param rotmat: can be `obedit->object_to_world().ptr()` when uv project is used.
* \param winx, winy: can be from `scene->r.xsch / ysch`.
*/
struct ProjCameraInfo *BKE_uvproject_camera_info(const struct Object *ob,
const float rotmat[4][4],
float winx,
float winy);
/**
* Apply UV from #ProjCameraInfo (camera).
*/
void BKE_uvproject_from_camera(float target[2],
const float source[3],
const struct ProjCameraInfo *uci);
/**
* Apply uv from perspective matrix.
* \param persmat: Can be `rv3d->persmat`.
*/
void BKE_uvproject_from_view(float target[2],
const float source[3],
const float persmat[4][4],
const float rotmat[4][4],
float winx,
float winy);
/**
* Apply orthographic UVs.
*/
void BKE_uvproject_from_view_ortho(float target[2],
const float source[3],
const float rotmat[4][4]);
/**
* So we can adjust scale with keeping the struct private.
*/
void BKE_uvproject_camera_info_scale(ProjCameraInfo *uci, float scale_x, float scale_y);
/*
* Free info. */
void BKE_uvproject_camera_info_free(ProjCameraInfo *uci);
} // namespace blender