Sudev
                
              
                
              
                  
                  
              1
              
             
            
              For some reason/s, am unable to set fill to my Bezier (3D). Here’s my code :
  let p0 = createVector(0, 20, 0);
  let p1 = createVector(0, 0, 40);
  let p2 = createVector(0, -60, 0);
  let p3 = createVector(0, 0, -40);
  beginShape();
  vertex(p0.x, p0.y, p0.z);
  bezierVertex(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p2.x, p2.y, p2.z);
  bezierVertex(p2.x, p2.y, p2.z, p3.x, p3.y, p3.z, p0.x, p0.y, p0.z);
  endShape();
             
            
              
              
              1 Like
            
            
           
          
            
            
              in Java Mode
size(700, 700, P3D); 
PVector p0 = new PVector(0, 20, 0);
PVector  p1 = new PVector(0, 0, 40);
PVector  p2 = new PVector(0, -60, 0);
PVector  p3 = new PVector(0, 0, -40);
translate(width/2, height/2, -10);
rotateY(32); 
beginShape();
fill(255, 0, 0); 
vertex(p0.x, p0.y, p0.z);
bezierVertex(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p2.x, p2.y, p2.z);
bezierVertex(p2.x, p2.y, p2.z, p3.x, p3.y, p3.z, p0.x, p0.y, p0.z);
endShape();
             
            
              
              
              1 Like
            
            
           
          
            
            
              Unlike java mode it is required to be called inside one of draw or setup functions.
function draw(){
  let p0 = createVector(0, 20, 0);
  let p1 = createVector(0, 0, 40);
  let p2 = createVector(0, -60, 0);
  let p3 = createVector(0, 0, -40);
  beginShape();
  vertex(p0.x, p0.y, p0.z);
  bezierVertex(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p2.x, p2.y, p2.z);
  bezierVertex(p2.x, p2.y, p2.z, p3.x, p3.y, p3.z, p0.x, p0.y, p0.z);
  endShape();
} 
  
             
            
              
              
              1 Like
            
            
           
          
            
              
                kll
                
              
              
                  
                  
              4
              
             
            
              and here no FILL problem:
function setup() {
  createCanvas(200, 200);
}
function draw(){
  background(200,200,0);
  translate(width/2,height/2);
  let p0 = createVector(0, 20, 0);
  let p1 = createVector(0, 0, 40);
  let p2 = createVector(0, -60, 0);
  let p3 = createVector(0, 0, -40);
  beginShape();
  fill(0,200,0);
  stroke(0,0,200);
  strokeWeight(2);
  vertex(p0.x, p0.y, p0.z);
  bezierVertex(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p2.x, p2.y, p2.z);
  bezierVertex(p2.x, p2.y, p2.z, p3.x, p3.y, p3.z, p0.x, p0.y, p0.z);
  endShape(CLOSE);
} 
  
pls. note the CLOSE of shape and the fill inside beginShape
             
            
              
              
              1 Like
            
            
           
          
            
              
                Sudev
                
              
              
                  
                  
              6
              
             
            
              Am not able to apply Fill() to the shape when used in WEBGL mode.
             
            
              
              
              
            
            
           
          
            
              
                kll
                
              
              
                  
                  
              7
              
             
            
              sorry, i could not see that, your code was not complete.
pls post again.
             
            
              
              
              
            
            
           
          
            
              
                Sudev
                
              
              
                  
                  
              9
              
             
            
              function setup() {
  createCanvas(200, 200, WEBGL);
}
function draw(){
  background(200,200,0);
  translate(width/2,height/2);
  let p0 = createVector(0, 20, 0);
  let p1 = createVector(0, 0, 40);
  let p2 = createVector(0, -60, 0);
  let p3 = createVector(0, 0, -40);
  beginShape();
  fill(0,200,0);
  stroke(0,0,200);
  strokeWeight(2);
  vertex(p0.x, p0.y, p0.z);
  bezierVertex(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p2.x, p2.y, p2.z);
  bezierVertex(p2.x, p2.y, p2.z, p3.x, p3.y, p3.z, p0.x, p0.y, p0.z);
  endShape(CLOSE);
} 
             
            
              
              
              
            
            
           
          
            
              
                kll
                
              
              
                  
                  
              10
              
             
            
              and? what is the problem?
some more words might be good,
like
- that is my actual code:
 
- when i run it ( processing IDE version 3.5.3 / online editor )
windows / linux / browser?
i get following ERROR 
             
            
              
              
              
            
            
           
          
            
              
                Sudev
                
              
              
                  
                  
              11
              
             
            
              When I create the same shape in 3D (WEBGL mode), fill() isn’t working for that shape. Your code is in 2D.
             
            
              
              
              
            
            
           
          
            
            
              share your code or the link of sketch from editor.p5js.org.
Or check out https://www.youtube.com/watch?v=6TPVoB4uQCU
             
            
              
              
              
            
            
           
          
            
              
                Sudev
                
              
              
                  
                  
              13
              
             
            
            
              
              
              
            
            
           
          
            
              
                kll
                
              
              
                  
                  
              14
              
             
            
              ok, and i try it and i noticed it not get filled
and also noticed that it show many
You must first call texture() before using vertex() with image based u and v coordinates
errors, you think it’s not worth mention it?
ok, so looks like you are right, p5.js  can not fill your “double” 3D-bezier thing.
while texture works usually also only on quad or triangle strip ( +lines? ), would mean any
3D surface should be “filled” with that type of “grid”?
as @janglee with the video tip suggested start with the 3D primitives
and possibly he can help you than with 3D surfaces.
             
            
              
              
              
            
            
           
          
            
              
                Sudev
                
              
              
                  
                  
              15
              
             
            
              Thanks mate ! Apologies for not showing errors.
             
            
              
              
              
            
            
           
          
            
            
              Potential workaround if you are projecting a 2D image into 3D space and want a texture fill is:
- try drawing your shape filled with texture on 2D Graphics / p5.Renderer
 
- draw the Graphics into your 3D space.
 
If you have a shape that can’t be filled as geometry, but can be defined in 2D:
- cover a 2D Graphics / p5.Renderer with your texture.
 
- draw your silhouette (e.g. a stick figure) onto a separate graphics.
 
- mask your texture image with your mask shape.
 
- draw the result into your 3D space.
 
             
            
              
              
              1 Like
            
            
           
          
            
              
                Sudev
                
              
              
                  
                  
              17
              
             
            
              Thanks mate. Will try that out.