TexturesΒΆ

[1]:
from pythreejs import *
from IPython.display import display
from math import pi
[2]:
# Reduce repo churn for examples with embedded state:
from pythreejs._example_helper import use_example_model_ids
use_example_model_ids()
[3]:
checker_tex = ImageTexture(imageUri='img/checkerboard.png')
earth_tex = ImageTexture(imageUri='img/earth.jpg')
[4]:
checker_tex
[4]:
[5]:
earth_tex
[5]:
[6]:
#
# Create checkerboard pattern
#

# tex dims need to be power of two.
arr_w = 16
arr_h = 8

import numpy as np

def gen_checkers(width, height, n_checkers_x, n_checkers_y):
    array = np.ones((width, height, 3), dtype='float32')

    # width in texels of each checker
    checker_w = width / n_checkers_x
    checker_h = height / n_checkers_y


    for y in range(height):
        for x in range(width):
            color_key = int(x / checker_w) + int(y / checker_h)
            if color_key % 2 == 0:
                array[x, y, :] = [ 0, 0, 0 ]
            else:
                array[x, y, :] = [ 1, 1, 1 ]
    # We need to flip x/y since threejs/webgl insists on column-major data for DataTexture
    return np.swapaxes(array, 0, 1)


data_tex = DataTexture(
    data=gen_checkers(arr_w, arr_h, 4, 2),
    format="RGBFormat",
    type="FloatType",
)
[7]:
data_tex
[7]:
[8]:
data_tex.data = gen_checkers(arr_w, arr_h, 8, 2)
[ ]: