Canvas getContext("3d")?

前言

不好意思,标题其实是开了个玩笑。大家都知道,Canvas 获取绘画上下文的 api 是 getContext("2d")。我第一次看到这个 api 定义的时候,就很自然的认为,既然有 2d 那一定是有 3d 的咯? 但是我接着我看到了 api 介绍的这句话

提示:在未来,如果 canvas 标签扩展到支持 3D 绘图,getContext() 方法可能允许传递一个 "3d" 字符串参数。

what? 我有一句妈卖批不知当讲不当讲... 从接触 canvas 之后我就一直等这个未来,等到后来我学习 three.js... 再等到现在,这个 getContext("3d") 还是没有出来。可能是因为越来越多浏览器都已经支持 webGL 的原因把,这个 getContext("3d") 有可能再也不会来了。

clipboard.png

webGL 就是浏览器端的 3D 绘图标准,它直接借助系统显卡来渲染 3D 场景,它能制作的 3D 应用,是普通 canvas 无法相比的。所以,你有复杂的 3D 前端项目,且不考虑 IE 的兼容性的话。不用说,直接使用 webGL 吧。

不使用 webGL 制作简单的 3D 效果

然而,有的时候我们只需要实现简单的 3D 效果。在没有学习 webGL 或这方面的框架的情况下,我们其实也可以在普通的 canvas api 基础上制作出来。而且,我们可以兼容 IE 9。先来看看,我们都能做些什么效果。

https://www.meizu.com/products/pro6/summary.html
clipboard.png

https://www.meizu.com/products/pro6/performance.html
clipboard.png

这的两个效果都是工作时简单的 3D 效果需求,没有必要使用 webGL。然而当时我并没有使用今天介绍的办法,因为没有扩展到 3D 坐标去实现所以只能很繁琐的转换成 2D 平面图形分析出来。

clipboard.png


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Canvas3D是HTML5中用于创建3D场景的API之一,它允许您使用JavaScript创建和渲染3D图形。以下是制作Canvas3D动画的一般步骤: 1. 创建HTML元素:在HTML文档中,使用canvas元素创建一个3D画布。 2. 设置画布样式:使用CSS样式设置画布的大小和位置。 3. 创建场景:使用JavaScript创建一个场景对象并将其添加到画布中。 4. 添加3D对象:使用JavaScript创建3D对象并将其添加到场景中。 5. 渲染场景:使用JavaScript在每个动画帧中渲染场景。 6. 添加动画:使用JavaScript创建动画并将其添加到场景中。 以下是一个简单的Canvas3D动画示例,它显示一个旋转的立方体: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Canvas3D Animation Tutorial</title> <style> canvas { width: 500px; height: 500px; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); border: 1px solid black; } </style> </head> <body> <canvas id="canvas"></canvas> <script> // 创建画布和场景 var canvas = document.getElementById("canvas"); var context = canvas.getContext("webgl"); var scene = new THREE.Scene(); // 创建相机 var camera = new THREE.PerspectiveCamera(75, canvas.width / canvas.height, 0.1, 1000); camera.position.z = 5; // 创建立方体 var geometry = new THREE.BoxGeometry(1, 1, 1); var material = new THREE.MeshBasicMaterial({color: 0xff0000}); var cube = new THREE.Mesh(geometry, material); scene.add(cube); // 创建动画 var animate = function() { requestAnimationFrame(animate); cube.rotation.x += 0.01; cube.rotation.y += 0.01; context.render(scene, camera); }; animate(); </script> </body> </html> ``` 这个示例使用了Three.js库来简化Canvas3D的编程。您可以通过访问Three.js的官方文档来了解更多关于使用Canvas3D创建3D动画的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值