QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
opennurbs_texture_mapping.h
Go to the documentation of this file.
1/* $NoKeywords: $ */
2/*
3//
4// Copyright (c) 1993-2007 Robert McNeel & Associates. All rights reserved.
5// Rhinoceros is a registered trademark of Robert McNeel & Assoicates.
6//
7// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
8// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
9// MERCHANTABILITY ARE HEREBY DISCLAIMED.
10//
11// For complete openNURBS copyright information see <http://www.opennurbs.org>.
12//
14*/
15
17//
18// defines ON_TextureMapping
19//
21
22#if !defined(OPENNURBS_TEXTURE_MAPPING_INC_)
23#define OPENNURBS_TEXTURE_MAPPING_INC_
24
26//
27// Class ON_TextureMapping
28//
29class ON_Line;
30class ON_BrepFace;
31class ON_3dPoint;
32
35
37{
38public:
40
43
44 // The copy constructor and operator= overrides are needed
45 // to ensure m_geometry is properly copied.
48
49 // overrides virtual ON_Object::IsValid
50 ON_BOOL32 IsValid( ON_TextLog* text_log = NULL ) const;
51
52 // overrides virtual ON_Object::Dump
53 void Dump( ON_TextLog& ) const;
54
55 // overrides virtual ON_Object::SizeOf
56 unsigned int SizeOf() const;
57
58 // overrides virtual ON_Object::Write
60 ON_BinaryArchive& binary_archive
61 ) const;
62
63 // overrides virtual ON_Object::Read
65 ON_BinaryArchive& binary_archive
66 );
67
68 void Default();
69
70 virtual
71 ON_UUID ModelObjectId() const;
72
73 /*
74 Determines whether the mapping, as currently set up, requires vertex normals to be present on the
75 mesh in order to evaluate the mapping correctly.
76 */
77 bool RequiresVertexNormals() const;
78 bool IsPeriodic(void) const;
79
80 /*
81 Description:
82 Create a mapping that will convert surface parameters into
83 normalized (0,1)x(0,1) texture coordinates.
84 */
85 bool SetSurfaceParameterMapping(void);
86
87 /*
88 Description:
89 Create a planar projection texture mapping.
90 Parameters:
91 plane - [in]
92 dx - [in] portion of the plane's x axis that is mapped to [0,1]
93 (can be a decreasing interval)
94 dy - [in] portion of the plane's x axis that is mapped to [0,1]
95 (can be a decreasing interval)
96 dz - [in] portion of the plane's x axis that is mapped to [0,1]
97 (can be a decreasing interval)
98 projection_method - [in]
99 1: Closest point mapping.
100 A target point P is mapped to the point on the plane
101 that is closest to P. The target normal is ignored.
102 2: Target line mapping. A target point-vector pair
103 (P, N), are mapped to the point on the plane
104 where the line through P, parallel to N, intersects
105 the plane. If the line is parallel to the plane,
106 the closest point mapping is used.
107 Example:
108 Create a mapping that maps the world axis aligned rectangle in
109 the world yz plane with corners at (0,3,5) and (0,7,19) to the
110 texture coordinate unit square.
111
112 ON_3dVector plane_xaxis(0.0,1.0,0.0);
113 ON_3dVector plane_yaxis(0.0,0,0,1.0);
114 ON_3dPoint plane_origin(0.0,2.0,4.0);
115 ON_Plane plane(plane_origin,plane_xaxis,plane_yaxis);
116 ON_Interval dx( 0.0, 7.0 - 3.0);
117 ON_Interval dy( 0.0, 19.0 - 5.0);
118 ON_Interval dz( 0.0, 1.0 );
119 ON_TextureMapping mapping;
120 mapping.CreatePlaneMapping(plane,dx,dy,dz);
121
122 Returns:
123 True if input is valid.
124 */
125 bool SetPlaneMapping(
126 const ON_Plane& plane,
127 const ON_Interval& dx,
128 const ON_Interval& dy,
129 const ON_Interval& dz
130 );
131
132 /*
133 Description:
134 Create a cylindrical projection texture mapping.
135 Parameters:
136 cylinder - [in]
137 cylinder in world space used to define a cylindrical
138 coordinate system. The angular parameter maps (0,2pi)
139 to texture "u" (0,1), The height parameter maps
140 (height[0],height[1]) to texture "v" (0,1), and
141 the radial parameter maps (0,r) to texture "w" (0,1).
142 bIsCapped - [in]
143 If true, the cylinder is treated as a finite
144 capped cylinder.
145 Returns:
146 True if input is valid.
147 Remarks:
148 When the cylinder is capped and m_texture_space = divided,
149 the cylinder is mapped to texture space as follows:
150 The side is mapped to 0 <= "u" <= 2/3.
151 The bottom is mapped to 2/3 <= "u" <= 5/6.
152 The top is mapped to 5/6 <= "u" <= 5/6.
153 This is the same convention box mapping uses.
154 */
155 bool SetCylinderMapping(
156 const ON_Cylinder& cylinder,
157 bool bIsCapped
158 );
159
160 /*
161 Description:
162 Create a spherical projection texture mapping.
163 Parameters:
164 sphere - [in]
165 sphere in world space used to define a spherical
166 coordinate system. The longitude parameter maps
167 (0,2pi) to texture "u" (0,1). The latitude paramter
168 maps (-pi/2,+pi/2) to texture "v" (0,1).
169 The radial parameter maps (0,r) to texture "w" (0,1).
170 Returns:
171 True if input is valid.
172 */
173 bool SetSphereMapping(
174 const ON_Sphere& sphere
175 );
176
177 /*
178 Description:
179 Create a box projection texture mapping.
180 Parameters:
181 plane - [in]
182 The sides of the box the box are parallel to the
183 plane's coordinate planes. The dx, dy, dz intervals
184 determine the location of the sides.
185 dx - [in]
186 Determines the location of the front and back planes.
187 The vector plane.xaxis is perpindicular to these planes
188 and they pass through plane.PointAt(dx[0],0,0) and
189 plane.PointAt(dx[1],0,0), respectivly.
190 dy - [in]
191 Determines the location of the left and right planes.
192 The vector plane.yaxis is perpindicular to these planes
193 and they pass through plane.PointAt(0,dy[0],0) and
194 plane.PointAt(0,dy[1],0), respectivly.
195 dz - [in]
196 Determines the location of the top and bottom planes.
197 The vector plane.zaxis is perpindicular to these planes
198 and they pass through plane.PointAt(0,0,dz[0]) and
199 plane.PointAt(0,0,dz[1]), respectivly.
200 bIsCapped - [in]
201 If true, the box is treated as a finite
202 capped box.
203 Returns:
204 True if input is valid.
205 Remarks:
206 When m_texture_space = divided, the box is mapped to texture
207 space as follows:
208
209 If the box is not capped, then each side maps to 1/4 of the texture map.
210
211 v=1+---------+---------+---------+---------+
212 | x=dx[1] | y=dy[1] | x=dx[0] | y=dy[0] |
213 | Front | Right | Back | Left |
214 | --y-> | <-x-- | <-y-- | --x-> |
215 v=0+---------+---------+---------+---------+
216 0/4 <=u<= 1/4 <=u<= 2/4 <=u<= 3/4 <=u<= 4/4
217
218 If the box is capped, then each side and cap gets 1/6 of the texture map.
219
220 v=1+---------+---------+---------+---------+---------+---------+
221 | x=dx[1] | y=dy[1] | x=dx[0] | y=dy[0] | z=dx[1] | z=dz[0] |
222 | Front | Right | Back | Left | Top | Bottom |
223 | --y-> | <-x-- | <-y-- | --x-> | --x-> | --x-> |
224 v=0+---------+---------+---------+---------+---------+---------+
225 0/6 <=u<= 1/6 <=u<= 2/6 <=u<= 3/6 <=u<= 4/6 <=u<= 5/6 <=u<= 6/6
226 */
227 bool SetBoxMapping(
228 const ON_Plane& plane,
229 ON_Interval dx,
230 ON_Interval dy,
231 ON_Interval dz,
232 bool bIsCapped
233 );
234
235 /*
236 Description:
237 Get plane mapping parameters from this texture mapping.
238 Parameters:
239 plane - [out]
240 dx - [out]
241 Portion of the plane's x axis that is mapped to [0,1]
242 dy - [out]
243 Portion of the plane's y axis that is mapped to [0,1]
244 dz - [out]
245 Portion of the plane's z axis that is mapped to [0,1]
246 Returns:
247 True if valid plane mapping parameters were returned.
248 Remarks:
249 NOTE WELL:
250 Generally, GetMappingPlane will not return the same
251 parameters passed to SetPlaneMapping. However, the
252 location of the plane will be the same.
253 */
254 bool GetMappingPlane(
255 ON_Plane& plane,
256 ON_Interval& dx,
257 ON_Interval& dy,
258 ON_Interval& dz
259 ) const;
260
261 /*
262 Description:
263 Get a cylindrical projection parameters from this texture mapping.
264 Parameters:
265 cylinder - [out]
266 Returns:
267 True if a valid cylinder is returned.
268 Remarks:
269 Generally, GetMappingCylinder will not return the same
270 parameters passed to SetCylinderMapping. However, the
271 location of the cylinder will be the same.
272 If this mapping is not cylindrical, the cylinder will
273 approximate the actual mapping primitive.
274 */
275 bool GetMappingCylinder(
276 ON_Cylinder& cylinder
277 ) const;
278
279 /*
280 Description:
281 Get a spherical projection parameters from this texture mapping.
282 Parameters:
283 sphere - [out]
284 Returns:
285 True if a valid sphere is returned.
286 Remarks:
287 Generally, GetMappingShere will not return the same
288 parameters passed to SetSphereMapping. However, the
289 location of the sphere will be the same.
290 If this mapping is not cylindrical, the cylinder will
291 approximate the actual mapping primitive.
292 */
293 bool GetMappingSphere(
294 ON_Sphere& sphere
295 ) const;
296
297 /*
298 Get a box projection from the texture mapping.
299 Parameters:
300 plane - [out]
301 The center of the box is at plane.origin and the sides
302 of the box are parallel to the plane's coordinate planes.
303 dx - [out]
304 The "front" and "back" sides of the box are in spanned
305 by the vectors plane.yaxis and plane.zaxis. The back
306 plane contains the point plane.PointAt(dx[0],0,0) and
307 the front plane contains the point plane.PointAt(dx[1],0,0).
308 dy - [out]
309 The "left" and "right" sides of the box are in spanned
310 by the vectors plane.zaxis and plane.xaxis. The left
311 plane contains the point plane.PointAt(0,dx[0],0) and
312 the back plane contains the point plane.PointAt(0,dy[1],0).
313 dz - [out]
314 The "top" and "bottom" sides of the box are in spanned
315 by the vectors plane.xaxis and plane.yaxis. The bottom
316 plane contains the point plane.PointAt(0,0,dz[0]) and
317 the top plane contains the point plane.PointAt(0,0,dz[1]).
318 Returns:
319 True if a valid box is returned.
320 Remarks:
321 Generally, GetMappingBox will not return the same
322 parameters passed to SetBoxMapping. However, the
323 location of the box will be the same.
324 */
325 bool GetMappingBox(
326 ON_Plane& plane,
327 ON_Interval& dx,
328 ON_Interval& dy,
329 ON_Interval& dz
330 ) const;
331
332
333 /*
334 Description:
335 Reverses the texture in the specified direction.
336 Parameters:
337 dir - [in] 0 = reverse "u", 1 = reverse "v", 2 = reverse "w".
338 Remarks:
339 Modies m_uvw so that the spedified direction transforms
340 the texture coordinate t to 1-t.
341 Returns:
342 True if input is valid.
343 */
344 bool ReverseTextureCoordinate( int dir );
345
346 /*
347 Description:
348 Swaps the specified texture coordinates.
349 Parameters:
350 i - [in]
351 j - [in]
352 Remarks:
353 Modifies m_uvw so that the specified texture coordinates are swapped.
354 Returns:
355 True if input is valid.
356 */
357 bool SwapTextureCoordinate( int i, int j );
358
359 /*
360 Description:
361 Tiles the specified texture coordinates.
362 Parameters:
363 dir - [in] 0 = "u", 1 = "v", 2 = "w".
364 count - [in] number of tiles
365 offset - [in] offset of the tile
366 Remarks:
367 Modies m_uvw so that the specified texture coordinate is
368 tiled.
369 Returns:
370 True if input is valid.
371 */
372 bool TileTextureCoordinate( int dir, double count, double offset );
373
374 /*
375 Description:
376 Evaluate the mapping to get a texture coordinate.
377 Parameters:
378 P - [in] Vertex location
379 N - [in] If the mapping projection is ray_projection,
380 then this is the vertex unit normal. Otherwise
381 N is ignored.
382 T - [out] Texture coordinate (u,v,w)
383
384 P_xform -[in]
385 Transformation to be applied to P before performing
386 the mapping calculation.
387 N_xform - [in]
388 Transformation to be applied to N before performing
389 the mapping calculation. One way to calculate N_xform
390 is to use the call P_xform::GetVectorTransform(N_xform).
391
392 Returns:
393 Nonzero if evaluation is successful. When the mapping
394 is a box or capped cylinder mapping, the value indicates
395 which side was evaluated.
396
397 Cylinder mapping:
398 1 = cylinder wall, 2 = bottom cap, 3 = top cap
399 Box mapping:
400 1 = front
401 2 = right
402 3 = back
403 4 = left
404 5 = bottom
405 6 = top
406
407 See Also:
408 ON_TextureMapping::GetTextureCoordinates
409 ON_Mesh::SetTextureCoordinates
410 */
411 virtual
412 int Evaluate(
413 const ON_3dPoint& P,
414 const ON_3dVector& N,
415 ON_3dPoint* T
416 ) const;
417
418 virtual
419 int Evaluate(
420 const ON_3dPoint& P,
421 const ON_3dVector& N,
422 ON_3dPoint* T,
423 const ON_Xform& P_xform,
424 const ON_Xform& N_xform
425 ) const;
426
427 int EvaluatePlaneMapping(
428 const ON_3dPoint& P,
429 const ON_3dVector& N,
430 ON_3dPoint* T
431 ) const;
432
433 int EvaluateSphereMapping(
434 const ON_3dPoint& P,
435 const ON_3dVector& N,
436 ON_3dPoint* T
437 ) const;
438
439 int EvaluateCylinderMapping(
440 const ON_3dPoint& P,
441 const ON_3dVector& N,
442 ON_3dPoint* T
443 ) const;
444
445 int EvaluateBoxMapping(
446 const ON_3dPoint& P,
447 const ON_3dVector& N,
448 ON_3dPoint* T
449 ) const;
450
451 int EvaluateMeshMapping(
452 const ON_3dPoint& P,
453 const ON_3dVector& N,
454 const ON_Mesh* mesh,
455 ON_3dPoint* T
456 ) const;
457
458 int EvaluateSurfaceMapping(
459 const ON_3dPoint& P,
460 const ON_3dVector& N,
461 const ON_Surface* srf,
462 ON_3dPoint* T
463 ) const;
464
465 int EvaluateBrepMapping(
466 const ON_3dPoint& P,
467 const ON_3dVector& N,
468 const ON_Brep* brep,
469 ON_3dPoint* T
470 ) const;
471
472 static void SetAdvancedBrepMappingToolFunctions(TEXMAP_INTERSECT_LINE_SURFACE, TEXMAP_BREP_FACE_CLOSEST_POINT);
473
474 /*
475 Description:
476 Quickly check to see if a mesh or tag has texture coordinates
477 set by this mapping.
478 Parameters:
479 mesh - [in]
480 tag - [in]
481 object_xform - [in] (optional)
482 If this transform is not NULL, then true will be
483 returned only if the mapping function is the same and
484 the tag's m_mesh_xform field is the same as mesh_xform.
485 This parameter is typically NULL or the value of
486 ON_MappingRef::m_object_xform.
487 Returns:
488 True if the meshes texture coordinates were set by this
489 mapping.
490 */
491 bool HasMatchingTextureCoordinates(
492 const ON_Mesh& mesh,
493 const ON_Xform* object_xform = 0
494 ) const;
496 const class ON_MappingTag& tag,
497 const ON_Xform* object_xform = 0
498 ) const;
499
500 /*
501 Description:
502 Get texture coordinates. This calculation is
503 expensive. When possible, use a MappingMatch()
504 query to avoid unnecessary calculations.
505 Parameters:
506 mesh - [in]
507 T - [out] Texture coordinates returned here.
508 mesh_xform - [in] (optional)
509 If the mesh has been transformed since the texture mapping was set
510 up, pass the transformation here. Typically this is the value
511 of ON_Mesh::m_mapping_xform or ON_MappingRef::m_object_xform
512 bLazy - [in]
513 If true and the mesh.m_T[] values were calculated using
514 this mapping, they are simply copied to the T[] array
515 and no calculations are performed. If you are calling
516 the 3d point version and you care about the z-coordinate,
517 then do not use the lazy option (meshes only store
518 2d texture coordinates).
519 Tside - [out]
520 In the case of divided textures, side information is returned
521 here if a lazy mapping is not done. Otherwise Tside->Count()
522 will be zero.
523 Cylinder mapping:
524 1 = cylinder wall, 2 = bottom cap, 3 = top cap
525 Box mapping:
526 1 = front
527 2 = right
528 3 = back
529 4 = left
530 5 = bottom
531 6 = top
532 Example:
533
534 ON_TextureMapping mapping = ...;
535 const ON_Mesh* mesh = ...;
536 bool bLazy = true;
537 ON_SimpleArray<ON_3dPoint> T(mesh->VertexCount());
538 T.SetCount(mesh->m_VertexCount());
539 if ( !mapping.GetTextureCoordinates(mesh,3,3,&T[0].x,bLazy) )
540 T.SetCount(0).
541
542 Returns:
543 True if successful.
544 */
545 bool GetTextureCoordinates(
546 const ON_Mesh& mesh,
548 const ON_Xform* mesh_xform = 0,
549 bool bLazy = false,
550 ON_SimpleArray<int>* Tside = 0
551 ) const;
552
553 bool GetTextureCoordinates(
554 const ON_Mesh& mesh,
556 const ON_Xform* mesh_xform = 0,
557 bool bLazy = false,
558 ON_SimpleArray<int>* Tside = 0
559 ) const;
560
561public:
562 // The only reliable and persistent way to reference texture
563 // mappings is by the mapping_id. If the mapping id is
564 // set to m_srfp_mapping_id, then all other mapping settings
565 // are ignored.
567
568 // Runtime texture mapping table index.
569 // This value is NOT SAVED IN 3DM FILES.
570 // This value is constant for each runtime instance of Rhino,
571 // but can change each time a model is loaded or saved.
572 // Once a texture mapping is in the CRhinoDoc material table,
573 // its id and index never change in that instance of Rhino.
575
576 // The texture mapping name is for UI and user comfort.
577 // Duplicates are permitted.
579
581 //
582 // Mapping types:
583 //
584 // You can either calculate texture coordinates based on
585 // the parameterization of the surface used to create a mesh,
586 // or project the natural parameterization from a mapping
587 // primitive, like a plane, sphere, box, or cylinder.
588 //
589 // Do not change TYPE enum values - they are saved in 3dm files.
590 //
591 enum TYPE
592 {
593 no_mapping = 0,
594
595 srfp_mapping = 1, // u,v = linear transform of surface params,w = 0
596 plane_mapping = 2, // u,v,w = 3d coordinates wrt frame
597 cylinder_mapping = 3, // u,v,w = logitude, height, radius
598 sphere_mapping = 4, // (u,v,w) = longitude,latitude,radius
599 box_mapping = 5,
600 mesh_mapping_primitive = 6, // m_mapping_primitive is an ON_Mesh
601 srf_mapping_primitive = 7, // m_mapping_primitive is an ON_Surface
602 brep_mapping_primitive = 8, // m_mapping_primitive is an ON_Brep
603
604 force_32bit_mapping_type = 0xFFFFFFFF
605 };
606
608
610 //
611 // Projection:
612 //
613 // When a mapping primitive, like a plane, sphere, box,
614 // or cylinder, is used, there are two projection options.
615 //
616 // clspt_projection: world xyz maps to the point on the
617 // mapping primitive that is closest to xyz.
618 // In this case, ON_TextureMapping::Evaluate
619 // ignores the vector argument.
620 //
621 // ray_projection: world xyz + world vector defines a world line.
622 // The world line is intersected with the mapping
623 // primitive and the intersection point that is
624 // closest to the world xyz point is used to
625 // calculate the mapping parameters.
626 //
627 // The value of m_projection can be changed as needed.
628 //
629 // If m_type = srfp_mapping, then m_projection is ignored.
630 //
632 {
633 no_projection = 0,
634 clspt_projection = 1,
635 ray_projection = 2,
636 force_32bit_mapping_projection = 0xFFFFFFFF
637 };
638
640
642 //
643 // Texture space
644 //
645 // When a mapping primitive is a box or a capped cylinder,
646 // there are two options for the mapping. Either the sides
647 // all map to (0,1)x(0,1) (so the either texture map appears
648 // on each side, or the sides map to distinct regions of the
649 // texture space.
650 //
652 {
653 single = 0, // sides and caps map to same texture space
654 divided = 1, // sides and caps map to distinct vertical
655 // regions of texture space.
656 // (0, 1/4, 2/4, 3/4, 1) for uncapped boxes.
657 // (0, 1/6, 2/6, 3/6, 4/6, 5/6, 1) for capped boxes.
658 // (0, 4/6, 5/6, 1) for capped cylinders.
659 force_32bit_texture_space = 0xFFFFFFFF
660 };
661
663
664 // The m_bCapped applies to cylinder and box mappings. If
665 // m_bCapped is false, the cylinder or box is "infinite".
666 // If m_bCapped is true, they are finite.
668
670 //
671 // For primitive based mappings, these transformations are
672 // used to map the world coordinate (x,y,z) point P and
673 // surface normal N before it is projected to the normalized
674 // mapping primitive. The surface normal transformation,
675 // m_Nxyz, is always calculated from m_Pxyz. It is a
676 // runtime setting that is not saved in 3dm files.
677 // If m_type is srfp_mapping, then m_Pxyz and m_Nxyz are
678 // ignored.
681
682 // Transform applied to mapping coordinate (u,v,w) to
683 // convert it into a texture coordinate.
685
686 // Custom mapping primitive.
688
689 static TYPE TypeFromInt( int i );
690 static PROJECTION ProjectionFromInt( int i );
691 static TEXTURE_SPACE TextureSpaceFromInt( int i);
692
693 ON__UINT32 MappingCRC() const;
694};
695
696#if defined(ON_DLL_TEMPLATE)
697// This stuff is here because of a limitation in the way Microsoft
698// handles templates and DLLs. See Microsoft's knowledge base
699// article ID Q168958 for details.
700#pragma warning( push )
701#pragma warning( disable : 4231 )
702ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_TextureMapping>;
703ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_TextureMapping>;
704#pragma warning( pop )
705#endif
706
707
708#endif
709
int i
Copyright (c) 2011-2018 by Andrew Mustun.
Definition autostart.js:32
Definition opennurbs_point.h:403
Definition opennurbs_point.h:931
Definition opennurbs_archive.h:152
Definition opennurbs_brep.h:980
Definition opennurbs_brep.h:1585
Definition opennurbs_array.h:760
Definition opennurbs_cylinder.h:28
Definition opennurbs_point.h:46
Definition opennurbs_line.h:20
Definition opennurbs_mesh.h:720
Definition opennurbs_mesh.h:795
Definition opennurbs_array.h:998
Definition opennurbs_object.h:393
virtual void Dump(ON_TextLog &) const
Definition opennurbs_object.cpp:1695
virtual ON_BOOL32 IsValid(ON_TextLog *text_log=NULL) const =0
virtual ON_BOOL32 Read(ON_BinaryArchive &binary_archive)
Definition opennurbs_object.cpp:1734
virtual ON_UUID ModelObjectId() const
Definition opennurbs_object.cpp:1622
virtual unsigned int SizeOf() const
Definition opennurbs_object.cpp:1677
ON_Object & operator=(const ON_Object &)
Definition opennurbs_object.cpp:1362
virtual ON_BOOL32 Write(ON_BinaryArchive &binary_archive) const
Definition opennurbs_object.cpp:1714
Definition opennurbs_plane.h:20
Definition opennurbs_array.h:46
Definition opennurbs_sphere.h:22
Definition opennurbs_surface.h:58
Definition opennurbs_textlog.h:20
Definition opennurbs_texture_mapping.h:37
ON_Xform m_Pxyz
Definition opennurbs_texture_mapping.h:679
TYPE m_type
Definition opennurbs_texture_mapping.h:607
ON_wString m_mapping_name
Definition opennurbs_texture_mapping.h:578
PROJECTION
Definition opennurbs_texture_mapping.h:632
PROJECTION m_projection
Definition opennurbs_texture_mapping.h:639
bool m_bCapped
Definition opennurbs_texture_mapping.h:667
ON_UUID m_mapping_id
Definition opennurbs_texture_mapping.h:566
int m_mapping_index
Definition opennurbs_texture_mapping.h:574
TEXTURE_SPACE
Definition opennurbs_texture_mapping.h:652
TEXTURE_SPACE m_texture_space
Definition opennurbs_texture_mapping.h:662
bool HasMatchingTextureCoordinates(const class ON_MappingTag &tag, const ON_Xform *object_xform=0) const
TYPE
Definition opennurbs_texture_mapping.h:592
ON_Object * m_mapping_primitive
Definition opennurbs_texture_mapping.h:687
ON_Xform m_uvw
Definition opennurbs_texture_mapping.h:684
ON_Xform m_Nxyz
Definition opennurbs_texture_mapping.h:680
ON_OBJECT_DECLARE(ON_TextureMapping)
Definition opennurbs_uuid.h:31
Definition opennurbs_xform.h:28
Definition opennurbs_string.h:392
#define ON_CLASS
Definition opennurbs_defines.h:91
#define N
Definition opennurbs_rand.cpp:70
#define NULL
Definition opennurbs_system.h:256
int ON_BOOL32
Definition opennurbs_system.h:362
unsigned int ON__UINT32
Definition opennurbs_system.h:326
bool(* TEXMAP_BREP_FACE_CLOSEST_POINT)(const ON_BrepFace *, const ON_3dPoint *, ON_3dPoint &)
Definition opennurbs_texture_mapping.h:34
int(* TEXMAP_INTERSECT_LINE_SURFACE)(const ON_Line *, const ON_BrepFace *, ON_SimpleArray< ON_X_EVENT > &)
Definition opennurbs_texture_mapping.h:33