【问题标题】:Curved and Draggable Carousel in ReactjsReactjs 中的弯曲和可拖动轮播
【发布时间】:2022-12-15 23:16:52
【问题描述】:

大家好,我有一个 Reactjs 项目,我想在其中开发一个可拖动的弯曲旋转木马。我设法用 Threejs 和 Reactjs 创建了一个“平滑”的滑块:Smooth Draggable Carousel

但是不可能给它一个像这样的弯曲形状:

我做了很多研究,但在 Reactjs 和 Threejs 中找不到任何相关信息。可能有一个 vertexSheader 可以放在某个地方或一个库中。

【问题讨论】:

    标签: reactjs three.js frontend carousel react-three-fiber


    【解决方案1】:

    是的,您可以在顶点着色器中执行此操作。您必须使用弯曲因子并根据 UV 变换 Z 以获得所需的结果。我这里有东西。

    像那样,我正在使用一个简单的 MeshBasicMaterial:

        material.onBeforeCompile = shader => {
    
        shader.uniforms.time = { value: 0 };
    
        shader.vertexShader = `
          uniform float time;
          ${shader.vertexShader}
        `;
    
        shader.vertexShader = shader.vertexShader.replace(
          '#include <begin_vertex>',
          `
            vec3 pos = position.xyz;
            float bendFactor = ${bendFactor.toFixed(1)};
    
            vec2 uv2 = uv - 0.5;
            pos.z = bendFactor * pow(uv2.x, 2.);
    
            vec3 transformed = vec3( pos );
          `
        );
    
        material.userData.shader = shader;
      };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多