Canvas Library
 

Colors and Textures formatted with CSS - taccGL Tutorial

Each 3D surface has a color/or and a texture. A texture is an image that is mapped on the surface. In section Basic Shapes we already had examples for colored surfaces and examples for HTML elements shown as 3D objects.

In fact a textured rectangle in taccgl™ is nothing else than an HTML img-element shown as 3D object and vice versa an HTML element shown as 3D object is just as 3D rectangle that carries the image of a 3D element as texture. You can also use HTML elements with nested elements inside and formatted with CSS as textures.

almost empty element with id="exh10r"
taccgl.actor('exh10i') . position ({el:"exh10r"}). duration(5). start();
RUN
taccgl.actor('exh10i',taccgl.dddBox) . position ({el:"exh10r"}). duration(5). start();
RUN
taccgl.actor('exh10i',taccgl.dddBox) . position ({el:"exh10r"}). rotateMiddle(2,3,4). duration(5). start();
RUN

The example has an HTML image showing a rock-texture with id="exh10i" on the left, which normally would have visibility:hidden. The example uses that image-texture and displays it on the right.

Opacity / Alpha

almost empty element with id="exh20"

Using the alpha method, it is possible to change the opacity of the mapped texture. If a color is specified as well, the color is used a background and will shine through a partially transparent texture. If alpha has two parameters, it animates the opacity from the first to the second value.

taccgl.actor('exh10i') . position ({el:"exh20"}). alpha(0.5). duration(5). start();
RUN
taccgl.actor('exh10i') . position ({el:"exh20"}). bgColor("red") . alpha(0.5). duration(5). start();
RUN
taccgl.actor('exh10i') . position ({el:"exh20"}). bgColor("black") . alpha(1,0) . duration(1). start();
RUN
taccgl.actor('exh10i') . position ({el:"exh20"}). alpha(1,0) . rotateMiddle(2,3,4). duration(1). start();
RUN

mapActor

almost empty element with id="exh40r"

The mapActor method maps an HTML as texture on a 3D transition.

taccgl.actor('exh40r') . mapActor ("exh10i"). duration(5). start();
RUN
taccgl.actor('exh40r',taccgl.dddBox) . selFront(). mapActor ("exh10i"). duration(5). start();
RUN
taccgl.actor('exh40r',taccgl.dddBox) .selBack (). mapActor ("exh10i").
selRight(). bgColor("yellow"). rotateMiddle(2,3,4). duration(5). start();
RUN

Lighting

In reality, while an object rotates away from a light source it receives less and less light. This effect is simulated by WebGL™ and needed to nicely display 3D objects. Look at the following scene and turn it with the mouse to see colors change. The effect is visible on the side surfaces of the cube and very well visible by comparing the color of the two rectangles on top, while turning the scene.

Also for display of curved surfaces lighting plays an important role, e.g. see the edges of the cube. taccgl™ automatically calculates colors and gradients as they fit consistently with the geometry.

A light source, which is per default directly in front of the screen, is simulated. Every 3D object receives light directly from this light source and reflects it to the user (called diffuse reflection). In reality objects receive addition light from many other light sources or via reflection from other objects. This process is simulated in a simplified way by a single factor (ambient reflection). With taccgl™ you can adjust diffuse and ambient reflection for all objects together and for each object individually. We do not have tutorial on this, please refer to the manual in the Lighting section.

Per default lighting parameters are set in a way that surfaces on the z=0 and all parallel planes, e.g. all normal HTML elements, receive the full light. When turned, they receive less diffuse light and so get darker.

WebGL™ is a trademark of the Khronos Group Inc.