【问题标题】:Aframe VR Curved plane and textAframe VR 曲面和文本
【发布时间】:2017-07-13 15:20:09
【问题描述】:

Aframe API 支持弯曲图像。然而,除了弯曲的图像,我还想制作弯曲的文字和平面。有人可以帮我解决这个问题吗?

我想我必须做一个实体,但我不知道必须设置哪些属性。

【问题讨论】:

    标签: javascript virtual-reality aframe


    【解决方案1】:

    我会使用https://github.com/mayognaise/aframe-html-shader 创建弯曲的文本。弯曲文本是一个部分圆柱体,内部使用repeat: -1 1 渲染材质。

    HTML 着色器使用 HTML 为我们创建一个纹理,我们可以将其用于文本,然后将该纹理应用到圆柱体。不幸的是,我们将不得不手动应用repeat: -1 1,因为该选项未公开。粗略的想法...

    <!DOCTYPE html>
    <html>
      <head>
        <title>Hello, WebVR! - A-Frame</title>
        <meta name="description" content="Hello, WebVR! - A-Frame">
        <script src="https://aframe.io/releases/0.6.0/aframe.min.js"></script>
        <script src="https://unpkg.com/aframe-html-shader@0.2.0/dist/aframe-html-shader.min.js">
      </head>
      <body>
        <script>
          AFRAME.registerComponent('update-repeat', {
            dependencies: ['material'], 
    
            init: function () {
              var texture = this.el.components.material.material.map;
              texture.repeat = new THREE.Vector2(-1, 1);
              texture.needsUpdate = true;
            }
          });
        </script>
    
        <div id="texture" style="width: 100%; height: 100%; position: fixed; left: 0; top: 0; z-index: -1; overflow: hidden">
          <p style="position: relative; top: 20px; font-size: 72px">HELLO HELLO</p>
          <p style="position: relative; top: 20px; font-size: 48px">curvy text</p>
        </div>
    
        <a-scene>
          <a-entity geometry="primitive: cylinder; radius: 2; segmentsRadial: 48; thetaLength: -160; openEnded: true"       
                    material="shader: html; target: #texture; side: double; width: 500; height: 300; transparent: true" update-repeat position="0 0 -4" rotation="0 -90 0"></a-entity>
          <a-sky color="#FAFAFA"></a-sky>
        </a-scene>
      </body>
    </html>
    

    看到这个example glitch I made for full answer

    https://aframe-curved-text.glitch.me/

    【讨论】:

      【解决方案2】:

      只需使用带有 src="#canvas" 的曲线图像。在画布中,你可以生成你想要的。

      <!DOCTYPE html>
      <html>
          <head>
              <script src="https://aframe.io/releases/1.0.3/aframe.min.js"></script>
          </head>
          <body>
      
          <a-scene>
              <a-assets>
                  <canvas id="myCanvas"></canvas>
              </a-assets>
      
              <a-curvedimage
                  src="#myCanvas"
                  radius="2"
                  theta-length="30"
                  rotation="0 160 0"
                  >        
              </a-curvedimage>
          </a-scene>
      
          <script>
              var canvas = document.getElementById("myCanvas");
              var ctx = canvas.getContext("2d");
              ctx.fillStyle = "#000"
              ctx.font = "22px sans-serif";
              ctx.fillText("Lorem ipsum dolor sit amet", 0, 30);
          </script>
      </body>
      </html>

      【讨论】:

        猜你喜欢
        • 2018-12-10
        • 1970-01-01
        • 2017-12-08
        • 2019-02-23
        • 1970-01-01
        • 1970-01-01
        • 2017-12-26
        • 2017-05-11
        • 1970-01-01
        相关资源
        最近更新 更多