Flask+A-Frame:交互式全景图展示网站

2023-05-16

简介:通过结合 Flask 轻量级 Web 框架与 A-Frame 3D 和 VR 技术,实现了一个可交互的全景图展示功能,用户可以在浏览器中自由观看、旋转和缩放全景图片。项目的核心是使用 Flask 搭建一个 Web 应用,它负责渲染全景图相关的 HTML 页面。通过在页面中引入 A-Frame 库,我们能够实现 3D 全景图渲染和交互功能,包括图片的旋转、平移和缩放。这使得用户能够更深入地探索全景图片的每个细节。适用于各种场景,如旅游景点展示、房地产项目宣传、虚拟现实应用等。它提供了一个简洁、高效的解决方案,让全景图片在网站上的展示变得更加引人入胜。

历史攻略:

sanic + A-Frame / Three.js 构建虚拟现实VR场景

操作步骤:

1、安装 Flask:

pip install Flask

2、创建一个名为 app.py 的文件,其中包含 Flask 应用:

# -*- coding: utf-8 -*-
# time: 2023/5/7 11:33
# file: app.py
# 公众号: 玩转测试开发
from flask import Flask, render_template

app = Flask(__name__)


@app.route('/')
def index():
    return render_template('index.html')


if __name__ == '__main__':
    app.run(debug=True)

3、在 Flask 应用的模板文件夹中(默认为 templates),创建一个名为 index.html 的文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>全景图示例</title>
    <script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
    <script>
        AFRAME.registerComponent('zoom-controls', {
            schema: {
                speed: {type: 'number', default: 1}
            },

            init: function () {
                this.zoom = 1;
                this.el.sceneEl.canvas.addEventListener('wheel', this.onWheel.bind(this));
            },

            onWheel: function (event) {
                event.preventDefault();

                const delta = Math.sign(event.deltaY) * this.data.speed;
                this.zoom = Math.max(1, this.zoom + delta);

                this.el.setAttribute('camera', 'zoom', this.zoom);
            }
        });
</script>
</head>
<body>
    <a-scene>
        <a-assets>
            <img id="panorama" src="/static/panorama.jpg">
        </a-assets>
        <a-sky src="#panorama"></a-sky>
        <a-camera zoom-controls="speed: 3">
            <a-cursor
                color="white"
                max="100"
                fuse="false"
                fuseTimeout="1500"
                scale="2 2 2"
                geometry="primitive: ring; radiusInner: 0.02; radiusOuter: 0.03"
                material="color: white; shader: flat"
            ></a-cursor>
        </a-camera>
    </a-scene>
</body>
</html>

4、将全景图图片放入 Flask 应用的静态文件夹中(默认为 static)。在本例中,我们使用名为 panorama.jpg 的全景图。()

5、运行 Flask 应用:

python app.py

6、运行效果:

图片

7、线上体验:http://36.40.91.202:5005/ 打开比较慢,只开放到2023/05/31。

图片

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask+A-Frame:交互式全景图展示网站 的相关文章

随机推荐

  • Tortoise Git 克隆出现"fatal: Authentication failed for"

    使用Tortoise Git克隆时出现 34 fatal Authentication failed for 34 的错误 xff0c 并且他还不让你输入用户名和密码 xff0c 寻找了许多办法 xff0c 看到最多的是在Git Bash中
  • 怎么解决 接口请求 504 Gateway Time-out

    HTTP 504 Gateway Timeout 错误通常是由于网关或代理服务器无法在规定的时间内从上游服务器接收到响应而导致的 这可能是由于上游服务器过载或网络问题导致的 要解决此问题 xff0c 可以尝试以下步骤 xff1a 检查上游服
  • WSL无法使用npm

    报错信息 root 64 DESKTOP U2RC2DU npm bash mnt c Program Files nodejs npm bin sh M bad interpreter No such file or directory
  • HDU 3700 Line belt

    Line belt Time Limit 2000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 3669 Accepted Su
  • Ubuntu中使用framebuffer的方法

    打开 etc initramfs tools modules文件 xff0c 在末尾加上 xff1a fbcon vesafb 打开 etc modprobe d blacklist framebuffer xff0c 找到 blackli
  • html5.超链接标签,图片标签

    lt a gt 超链接标签 a标签常用的属性 xff1a href 用于指定链接的资源 target 设置打开新资源的目标 Blank 在独立的窗口上打开新资源 self 在当前窗口打开新资源 file file协议 xff08 文件协议
  • ubuntu22.04 搭建 Pytorch环境

    关于电脑 第一步 安装anaconda 1 进入官网 链接 anaconda 2 下载linux的sh版 3 在对应位置输入 span class token function sh span 文件名 sh 4 选择 yes 5 选择no
  • opencv的ORB特征(slambook2 orb_cv.cpp代码详解)

    ORB特征提取与匹配 slambook2 ch7 orb cv cpp 1 头文件 span class token macro property span class token directive hash span span clas
  • Debian安装nodejs

    安装指定版本nodejs xff0c 以18 X版本为例 1 通过curl命令向系统中添加NodeSource存储库 curl sL https deb nodesource com setup 18 x bash xff08 如果提示 c
  • pip安装第三方库全攻略:普通安装、安装whl后缀文件、使用国内镜像安装

    简介 xff1a pip 是 Python 的包安装程序 其实 xff0c pip 就是 Python 标准库 xff08 The Python Standard Library xff09 中的一个包 xff0c 只是这个包比较特殊 xf
  • Python:处理cv2模块putText中文无法识别问题

    简介 xff1a 在cv2中 xff0c 目前putText函数中文是无法直接使用的 xff0c 需要进行一点的转换 解决办法为通过PIL模块重新封装一个函数 xff0c 直接调用 如图 xff1a 通过PIL模块改造 xff1a new
  • VLC播放电视直播rtmp流地址

    简介 xff1a RTMP是Real Time Messaging Protocol xff08 实时消息传输协议 xff09 的首字母缩写 该协议基于TCP xff0c 是一个协议族 xff0c 包括RTMP基本协议及RTMPT RTMP
  • Python:global的使用

    简介 xff1a 1 global是Python中的全局变量关键字 2 全局变量是编程术语中的一种 xff0c 源自于变量之分 3 变量分为局部与全局 xff0c 局部变量又可称之为内部变量 4 由某对象或某个函数所创建的变量通常都是局部变
  • Python:opencv画点、圆、线、多边形、矩形

    简介 xff1a 机器学习视觉方向一般都需要在图像中添加标注框 xff0c 标注框有着很大的用处 xff0c 特别是对图像中某些需要关注的特征起到圈定的效果 xff0c 方便对特征选择进行处理 相关攻略 xff1a 机器学习 xff1a 基
  • adb重启或关机手机命令

    简介 xff1a 在某些特殊场景中 xff0c 例如手机真机不在身边 xff0c 但已通过adb进行连接 xff0c 可以使用命令进行远程关机或者重启 相关攻略 xff1a adb xff1a 常用命令 adb xff1a win10系统下
  • docker:更换镜像源

    简介 xff1a 因为国内的网络访问问题 xff0c 为加快拉取镜像速度 xff0c 建议设置docker国内镜像源 相关攻略 xff1a win10 xff1a 安装docker和测试安装redis centos7 6 xff1a 安装d
  • 七大顶级Linux桌面比较

    1七大顶级Linux桌面 xff1a Unity 对于开源Linux平台来说 xff0c 如何选择就是首要解决的问题 通常Linux发行版都有默认的桌面成为你的首选 xff0c 但目前可供选择的桌面环境种类繁多 特别是Ubuntu系统一个平
  • Linux:安装go环境

    简介 xff1a Go xff08 又称 Golang xff09 是 Google 的 Robert Griesemer xff0c Rob Pike 及 Ken Thompson 开发的一种静态强类型 编译型语言 Go 语言语法与 C
  • docker应用:搭建私有云盘

    简介 xff1a NextCloud是一个开源的云存储解决方案 xff0c 可以在自己的服务器上搭建个人云存储系统 它提供了与市面上主流云存储服务 xff08 如Dropbox Google Drive xff09 相似的功能 xff0c
  • Flask+A-Frame:交互式全景图展示网站

    简介 xff1a 通过结合 Flask 轻量级 Web 框架与 A Frame 3D 和 VR 技术 xff0c 实现了一个可交互的全景图展示功能 xff0c 用户可以在浏览器中自由观看 旋转和缩放全景图片 项目的核心是使用 Flask 搭