AB4D Forum

Full Version: Question about textures
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Can you explain to me how textures are applied to objects in your solution?

Specifically, if I have a cube and project an image directly onto one face of a cube, can it appear identically on the opposite side of the cube as if the cube were solid? In SketchUp, this is called a projected image but instead of the texture being projected from a single point, the entire texture is a solid that extrudes through the object, regardless of its shape.

I hope my description makes sense, but let me know if you need clarification.

Lloyd
In WPF textures are applied to 3D objects with TextureCoordinates that are defined in GeomatyMesh3D. Here each Position (Point3D that makes the 3D object) has its own texture coordinate. For example a texture coordinate with value (0, 0) means upper left corner of the texture image, (1, 1) means lower right corner.

You can create a 3D box with Ab3d.PowerToys and than change the TextureCoordinates.

To see how the positions and their texture coordinates are defined by default with Ab3d.PowerToys it is best to use the Dumper class in the library. For example you can execute the following code:

Code:
var boxMesh3D = new Ab3d.Meshes.BoxMesh3D(new Point3D(50, 50, 50), new Size3D(100, 100, 100), 1, 1, 1);
Ab3d.Utilities.Dumper.Dump(boxMesh3D.Geometry);

The second line writes the structure of the object into Visual Studio's Output window. You will see the following:

Code:
Ind. -> Pos:     X       Y       Z       Normal             Texture Coord.
   0 ->   0:    0,00  100,00  100,00     0,00 1,00 0,00     0,00 1,00
   1 ->   1:  100,00  100,00  100,00     0,00 1,00 0,00     1,00 1,00
   2 ->   3:  100,00  100,00    0,00     0,00 1,00 0,00     1,00 0,00

   3 ->   0:    0,00  100,00  100,00     0,00 1,00 0,00     0,00 1,00
   4 ->   3:  100,00  100,00    0,00     0,00 1,00 0,00     1,00 0,00
   5 ->   2:    0,00  100,00    0,00     0,00 1,00 0,00     0,00 0,00

   6 ->   4:    0,00    0,00  100,00     0,00 0,00 1,00     0,00 1,00
   7 ->   5:  100,00    0,00  100,00     0,00 0,00 1,00     1,00 1,00
   8 ->   7:  100,00  100,00  100,00     0,00 0,00 1,00     1,00 0,00

   9 ->   4:    0,00    0,00  100,00     0,00 0,00 1,00     0,00 1,00
  10 ->   7:  100,00  100,00  100,00     0,00 0,00 1,00     1,00 0,00
  11 ->   6:    0,00  100,00  100,00     0,00 0,00 1,00     0,00 0,00

  12 ->   8:    0,00    0,00    0,00     -1,00 0,00 0,00     0,00 1,00
  13 ->   9:    0,00    0,00  100,00     -1,00 0,00 0,00     1,00 1,00
  14 ->  11:    0,00  100,00  100,00     -1,00 0,00 0,00     1,00 0,00

  15 ->   8:    0,00    0,00    0,00     -1,00 0,00 0,00     0,00 1,00
  16 ->  11:    0,00  100,00  100,00     -1,00 0,00 0,00     1,00 0,00
  17 ->  10:    0,00  100,00    0,00     -1,00 0,00 0,00     0,00 0,00

  18 ->  12:  100,00    0,00  100,00     1,00 0,00 0,00     0,00 1,00
  19 ->  13:  100,00    0,00    0,00     1,00 0,00 0,00     1,00 1,00
  20 ->  15:  100,00  100,00    0,00     1,00 0,00 0,00     1,00 0,00

  21 ->  12:  100,00    0,00  100,00     1,00 0,00 0,00     0,00 1,00
  22 ->  15:  100,00  100,00    0,00     1,00 0,00 0,00     1,00 0,00
  23 ->  14:  100,00  100,00  100,00     1,00 0,00 0,00     0,00 0,00

  24 ->  16:  100,00    0,00    0,00     0,00 0,00 -1,00     0,00 1,00
  25 ->  17:    0,00    0,00    0,00     0,00 0,00 -1,00     1,00 1,00
  26 ->  19:    0,00  100,00    0,00     0,00 0,00 -1,00     1,00 0,00

  27 ->  16:  100,00    0,00    0,00     0,00 0,00 -1,00     0,00 1,00
  28 ->  19:    0,00  100,00    0,00     0,00 0,00 -1,00     1,00 0,00
  29 ->  18:  100,00  100,00    0,00     0,00 0,00 -1,00     0,00 0,00

  30 ->  20:  100,00    0,00  100,00     0,00 -1,00 0,00     0,00 1,00
  31 ->  21:    0,00    0,00  100,00     0,00 -1,00 0,00     1,00 1,00
  32 ->  23:    0,00    0,00    0,00     0,00 -1,00 0,00     1,00 0,00

  33 ->  20:  100,00    0,00  100,00     0,00 -1,00 0,00     0,00 1,00
  34 ->  23:    0,00    0,00    0,00     0,00 -1,00 0,00     1,00 0,00
  35 ->  22:  100,00    0,00    0,00     0,00 -1,00 0,00     0,00 0,00

This shows how the triangles that make up the 3D box are defined - tree lines make up one triangle - the second column in Position index and the following are Position, Normal and TextureCoodinages.

I hope you understand the structure of 3D box and will be able to change it for your needs.