Rounded cube with checkerboard texture

Hey,

I just found this codepen which maps a checkerboard coloring on cells of a plane-geometry.

If I want to do same same but to an rounded-cube geometry… ?

Kinda goldfish here
B

Hi!
And how the desired result with a rounded cube has to look like?

@prisoner849

Just the texture → not the stretching of the cube geometry

So what’s the question? :slight_smile:

Three.js has RoundedBoxGeometry https://cdn.skypack.dev/three@0.132.2/examples/jsm/geometries/RoundedBoxGeometry.js, that supports UVs.

Example: Edit fiddle - JSFiddle - Code Playground

изображение

@prisoner849 almost yes, but still, at some sides it is not alternating the chequer´s

I´d love to have it alternating it´s chequers on each side?

This is the best I could imagine for the UV based checkered pattern of a rounded box: Edit fiddle - JSFiddle - Code Playground

let g = new RoundedBoxGeometry(5, 5, 5, 10, 1);
let m = new THREE.MeshBasicMaterial({
  onBeforeCompile: shader => {
  	shader.fragmentShader = `${shader.fragmentShader}`
    .replace(
    	`vec4 diffuseColor = vec4( diffuse, opacity );`,
      `
      	float chCount = 7.;
        float checker = (1. / chCount);
        float actualCheckers = 1. - checker;
        float halfChecker = checker * 0.5;
      	vec2 bUv = (vUv * actualCheckers) - halfChecker;
      	vec2 cUv = fract((bUv) * (chCount * 0.5)) - 0.5;
        float checkerVal = clamp(step(cUv.x * cUv.y, 0.), 0.5, 1.);
      	vec3 col = vec3(checkerVal);
      	vec4 diffuseColor = vec4( col, opacity );
      `
    );
  	console.log(shader.fragmentShader)
  }
});
m.defines = {"USE_UV":""};
let o = new THREE.Mesh(g, m);
scene.add(o);

chCount must be an odd number.

3 Likes

Really cool @prisoner849 - would this approach be able to use a custom texture as well?

If segmentation is odd, then yes :thinking: