所有分类
  • 所有分类
  • 后端开发
2016 年 VR 改变世界,酷炫效果背后的普及难题与内容创作成本居高不下

2016 年 VR 改变世界,酷炫效果背后的普及难题与内容创作成本居高不下

开发Web端的VR内容Scnipt版本中,进而实现Web端的VR。大多数WebVR应用可以作为后期产品的储备和预研,但要推出真正可供用户使用并流畅体验的产品,还是有较长的路要走。下面把大家可能会关心的开发环节简单介绍一下:

现在,VR技术就跟开了挂似的飞速进步着!你知道吗?不只是游戏和电影,它还能在教育、医疗这些地方大显身手。今天我就来聊聊怎么自己动手做个Web端的VR内容,还有我在这过程中学到的WebVR的好处。

初识WebVR:打破下载的束缚

本来,VR游戏得下载专用APP才能玩儿。但是有了WebVR,我们现在直接用浏览器就可以玩!再也不用花时间去找各种乱七八糟的软件!尤其是网速慢的时候,这个功能真的太方便了!

技术探索:从引擎到Web的转化

// 引入A-Frame框架
  
  
  
      
  
  
  
  
  
  
  
  
    
  

哎哟害,我知道你想问啥,就是把C/C++程序搬到Javascript上呗!这个的确有点麻烦,但是你要有点编程底子,这活儿也没那么吓人。然后,我还试过用像Three.js啊、Babylon.js这种WebGL引擎做VR内容,这些东西真的很管用,帮我省了不少力气,可以专心搞自己的东西啦~

面向普通用户:简易封装带来的变革

为了让大家都能玩转WebVR内容,我还试过那些没学过编程也能用的工具。这些小玩意儿就像糖衣炮弹,隐藏了技术的复杂性,只给你呈现最简单、最好用的那部分。这样一来,就算你对编程一窍不通,也能做出属于自己的VR作品!这种人人都能参与的创作方式真的太酷了!

var renderer = new THREE.WebGLRenderer({antialias: true});
renderer.setPixelRatio(window.devicePixelRatio);
 document.body.appendChild(renderer.domElement);
// 创建Three.js的场景
var scene = new THREE.Scene();
// 创建Three.js的摄像机
var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 10000);
// 调用WebVR API中的摄像机控制器对象,并将其与主摄像机进行绑定
var controls = new THREE.VRControls(camera);
// 设置为站立姿态controls.standing = true;
// 调用WebVR API中的渲染控制器对象,并将其与渲染器进行绑定
var effect = new THREE.VREffect(renderer);
effect.setSize(window.innerWidth, window.innerHeight);// 创建一个全局的VR管理器对象,并进行初始化的参数设置
var params = {
  hideButton: false, // Default: false.
  isUndistorted: false // Default: false.
};
var manager = new WebVRManager(renderer, effect, params);

技术优化:追求更高的渲染质量

function onTextureLoaded(texture) {
  texture.wrapS = THREE.RepeatWrapping;
  texture.wrapT = THREE.RepeatWrapping;
  texture.repeat.set(boxSize, boxSize);  
  var geometry = new THREE.BoxGeometry(boxSize, boxSize, boxSize);  
  var material = new THREE.MeshBasicMaterial({
    map: texture,
    color: 0x01BE00,
    side: THREE.BackSide
  });  
  // Align the skybox to the floor (which is at y=0).
  skybox = new THREE.Mesh(geometry, material);
  skybox.position.y = boxSize/2;
  scene.add(skybox);  
  // For high end VR devices like Vive and Oculus, take into account the stage
  // parameters provided.
  setupStage();
}
// Create 3D objects.
var geometry = new THREE.BoxGeometry(0.5, 0.5, 0.5);
var material = new THREE.MeshNormalMaterial();
var targetMesh = new THREE.Mesh(geometry, material);
var light = new THREE.DirectionalLight( 0xffffff, 1.5 );
light.position.set( 10, 10, 10 ).normalize();
scene.add( light );  
var ambientLight = new THREE.AmbientLight(0xffffff);
scene.add(ambientLight);
var loader = new THREE.ObjectLoader();
loader.load('./assets/scene.json', function (obj){
    mesh = obj;    
    // Add cube mesh to your three.js scene
    scene.add(mesh);
    mesh.traverse(function (node) {
        if (node instanceof THREE.Mesh) {
            node.geometry.computeVertexNormals();
        }
    });    
    // Scale the object
    mesh.scale.x = 0.2;
    mesh.scale.y = 0.2;
    mesh.scale.z = 0.2;
    targetMesh = mesh;    
    // Position target mesh to be right in front of you.
    targetMesh.position.set(0, controls.userHeight * 0.8, -1);
});

其实做WebVR开发时我会发现,虽然方便,但是还是有点卡顿。要让用户享受好的虚拟现实体验,我就得好好搞搞怎么优化画质和操作流畅。这可不是小事,比如要搞定WebGL引擎和VRSDK集成调试这些东西。

// Request animation frame loop functionvar lastRender = 0;function animate(timestamp) {
  var delta = Math.min(timestamp - lastRender, 500);
  lastRender = timestamp;  
   // Update VR headset position and apply to camera.
  //更新获取HMD的信息
  controls.update();  
   // Render the scene through the manager.
  //进行camera更新和场景绘制
  manager.render(scene, camera, timestamp);
  requestAnimationFrame(animate);
}

视觉设计的重要性

做VR内容时,我深深体会到视觉设计真的很重要。好看的设计不仅能让你玩得开心,还可以让人更好地沉浸在虚拟场景里。我就试着设计了各种各样主题的Vive手柄,不仅仅要漂亮,还要让你感觉身临其境!

工具与流程的革新

说起来这个技术研发,我发现其实工具和流程也是挺重要的。比如说我用的那个蓝图系统UE就特别好用,能让我在一个看得见的界面上迅速搭起复杂的逻辑。还有那个叫PBR的流程,你别看它最早是从游戏行业传出来的,但是在做VR内容时也有很大的好处。

技术与创作的结合

最后我明白了,VR体验设计,创意比技术更关键!每次技术进步都是为了提高内容质量和用户体验。以后我要把技术和创意完美融合,做出真正耐人寻味的VR内容。

经过这段时间的摸索和体验,我对于WebVR有了挺深的了解。它不只是让我们更方便地看VR内容,还能让那些不懂技术的朋友也能做出自己的VR作品。以后,我希望能在这个领域多探索,做出来的VR作品要更好玩实用,让大家都可以从VR里找到快乐!

文章收尾时,咱们聊聊WebVR会怎样改变我们的日常生活!欢迎大家畅所欲言,也别忘了给这篇文章点个赞,分享出去,让更多朋友感受下WebVR的魔力~

2016 年 VR 改变世界,酷炫效果背后的普及难题与内容创作成本居高不下

原文链接:https://www.icz.com/technicalinformation/web/javascript/2024/06/17444.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?