Blender V4.5
AppView.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008-2022 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#include <iostream>
10
11#include "AppConfig.h"
12#include "AppView.h"
13#include "Controller.h"
14
19#include "../stroke/Canvas.h"
22#include "../view_map/ViewMap.h"
23
24#include "BLI_math_rotation.h"
25
26#include "IMB_imbuf.hh"
27#include "IMB_imbuf_types.hh"
28
29#if 1 // FRS_antialiasing
30# include "BKE_global.hh"
31# include "DNA_scene_types.h"
32#endif
33
34#include "FRS_freestyle.h"
35
36namespace Freestyle {
37
79
81{
82 /*int ref =*//* UNUSED */ _RootNode.destroy();
83
85 /*ref =*//* UNUSED */ _p2DNode.destroy();
86}
87
89{
91
93 v -= 0.5 * (bbox.getMin() + bbox.getMax());
94
95 return v.norm();
96}
97
99{
101 Vec3r u = bbox.getMin();
102 Vec3r v = bbox.getMax();
103 Vec3r cameraCenter(UNPACK3(g_freestyle.viewpoint));
104
105 Vec3r w1(u[0], u[1], u[2]);
106 Vec3r w2(v[0], u[1], u[2]);
107 Vec3r w3(u[0], v[1], u[2]);
108 Vec3r w4(v[0], v[1], u[2]);
109 Vec3r w5(u[0], u[1], v[2]);
110 Vec3r w6(v[0], u[1], v[2]);
111 Vec3r w7(u[0], v[1], v[2]);
112 Vec3r w8(v[0], v[1], v[2]);
113
114 real _znear = std::min(
115 (w1 - cameraCenter).norm(),
116 std::min((w2 - cameraCenter).norm(),
117 std::min((w3 - cameraCenter).norm(),
118 std::min((w4 - cameraCenter).norm(),
119 std::min((w5 - cameraCenter).norm(),
120 std::min((w6 - cameraCenter).norm(),
121 std::min((w7 - cameraCenter).norm(),
122 (w8 - cameraCenter).norm())))))));
123
124 return std::max(_znear, 0.001);
125}
126
128{
130 Vec3r u = bbox.getMin();
131 Vec3r v = bbox.getMax();
132 Vec3r cameraCenter(UNPACK3(g_freestyle.viewpoint));
133
134 Vec3r w1(u[0], u[1], u[2]);
135 Vec3r w2(v[0], u[1], u[2]);
136 Vec3r w3(u[0], v[1], u[2]);
137 Vec3r w4(v[0], v[1], u[2]);
138 Vec3r w5(u[0], u[1], v[2]);
139 Vec3r w6(v[0], u[1], v[2]);
140 Vec3r w7(u[0], v[1], v[2]);
141 Vec3r w8(v[0], v[1], v[2]);
142
143 real _zfar = std::max(
144 (w1 - cameraCenter).norm(),
145 std::max((w2 - cameraCenter).norm(),
146 std::max((w3 - cameraCenter).norm(),
147 std::max((w4 - cameraCenter).norm(),
148 std::max((w5 - cameraCenter).norm(),
149 std::max((w6 - cameraCenter).norm(),
150 std::max((w7 - cameraCenter).norm(),
151 (w8 - cameraCenter).norm())))))));
152
153 return _zfar;
154}
155
157{
158 real Near = std::max(0.1, (real)(-2.0f * _maxAbs + distanceToSceneCenter()));
159 return Near;
160}
161
162} /* namespace Freestyle */
Configuration file.
#define DEG2RADF(_deg)
#define UNPACK3(a)
Class to define a canvas designed to draw style modules.
The spinal tap of the system.
struct FreestyleGlobals g_freestyle
Class to define the representation of 3D Line.
Class to represent a light node.
Class to build a shape node. It contains a Rep, which is the shape geometry.
Classes to define a silhouette structure.
String utilities.
Class to define the representation of a vertex for displaying purpose.
Classes to define a View Map (ViewVertex, ViewEdge, etc.)
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE btScalar norm() const
Return the norm (length) of the vector.
Definition btVector3.h:263
real distanceToSceneCenter()
Definition AppView.cpp:88
AppView(const char *iName=0)
Definition AppView.cpp:38
NodeGroup _Light
Definition AppView.h:241
virtual ~AppView()
Definition AppView.cpp:80
NodeDrawingStyle * _ModelRootNode
Definition AppView.h:237
NodeDrawingStyle * _DebugRootNode
Definition AppView.h:239
int rabs(int x)
Definition AppView.h:223
NodeDrawingStyle * _p2DSelectionNode
Definition AppView.h:252
NodeGroup _p2DNode
Definition AppView.h:251
NodeGroup _RootNode
Definition AppView.h:236
NodeDrawingStyle * _SilhouetteRootNode
Definition AppView.h:238
const Point & getMin() const
Definition BBox.h:67
const Point & getMax() const
Definition BBox.h:72
void setPointSize(const float iPointSize)
void setStyle(const DrawingStyle::STYLE iStyle)
void setLineWidth(const float iLineWidth)
void setLightingEnabled(const bool iEnableLighting)
virtual void AddChild(Node *iChild)
Definition NodeGroup.cpp:16
virtual int destroy()
Definition NodeGroup.cpp:26
virtual const BBox< Vec3r > & bbox() const
Definition Node.h:51
inherits from class Rep
Definition AppCanvas.cpp:20
double real
Definition Precision.h:14