使用 javascript 旋转 3D 图片

2023-11-21

我开始开发一个广泛使用 javascript 的单页网站。该网站的主要目的是推广我的客户的产品。该网站将包含一张产品 3D 图像。当用户单击并拖动时,它应该相应旋转。请参阅下面的链接。我需要与以下链接中提到的完全相同的效果

单击此处获取链接

如何使用 javascript 实现此目的而不使用magic 360?请给我一些文章或教程链接,因为我搜索但找不到任何相关教程。


这是我刚刚拼凑在一起的一些 JavaScript。选择一个预构建的库(用于浏览器兼容性等),但是当您有机会深入了解实际发生的情况时。note我在答案提交表单中写了此内容,因此可能存在语法和其他错误

<!-- an empty div to hold your images / frames -->
<div id="view3d"></div>
...
<script>
    (function() {

    // setup
    var viewer = document.getElementById("view3d");
    var name = "3d Boat";
    var frameUri = "/images/demo3d.#.jpg";
    var frameStart = 1;
    var frameEnd = 100;

    // setup the html IMG's
    for(var i=frameStart; i<=frameEnd; i++) {
        var img = document.createElement("img");
        img.src = frameUri.replace("#", i);
        img.alt = name;
        img.style.display = "none";
        viewer.appendChild(img);
    }

    // persisted variables and events
    var that = this;
    this.rotateX = 0;
    this.isRotating = false;
    this.frames = viewer.getElementsByTagName("img");
    this.frameIdx = 0;
    this.pixelsPerFrame = viewer.offsetWidth / (frames.length / 2);
    function rotateMouseUp() { isRotating = false; };
    function rotateMouseDown(event) { 
        mouseX = event.pageX;
        isRotating = true; 
    };
    function rotateMouseMove(event) {
        if(!this.isRotating) 
            return;
        var x = event.pageX;
        var delta = this.rotateX - x;
        if(delta >= this.pixelsPerFrame) {
            this.rotateX = x;
            this.frames[this.frameIdx].style.display = 'none';
            this.frameIdx = (this.frameIdx + parseInt(delta / pixelsPerFrame)) % this.frames.length;
            this.frames[this.frameIdx].style.display = '';
        }
    }
    viewer.onmousedown = rotateMouseDown.bind(that);
    viewer.onmouseup = rotateMouseUp.bind(that);
    viewer.onmousemove = rotateMouseMove.bind(that);

    // show the first image
    this.frames[this.frameIdx].style.display = '';

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

使用 javascript 旋转 3D 图片 的相关文章

随机推荐

  • 创建文件 获取文件时间 设置文件时间

    我在使用 GetFileTime 和 SetFileTime 时遇到问题 当涉及到目录时 具体来说我认为我的问题是 我是 WinAPI 的新手 我认为我没有得到 正确处理 有两种情况 首先 我只需要一个句柄来获取文件或目录 时间戳 创建 访
  • 类型错误:格式字符串参数不足 - 使用 %Y-%m 时 Python SQL 连接

    with engine connect as con rs con execute SELECT datediff STR TO DATE CONCAT year month day Y m d current date from TABL
  • .setVisible(true) 立即重绘

    在一个简短的方法中 我使用 setVisible false 隐藏 JFrame 然后我截取屏幕截图并使用 setVisible true 恢复 JFrame 再次可见后 窗口应该显示与之前不同的图片 假设截取的屏幕截图的一部分 问题是 在
  • 如何从命令行使用 MSBuild 构建所有内容?

    这是有效的吗 MSBuild t all configuration all 我想使用 Visual Studio 2008 中的 MSBuild 从命令行构建 sln 文件等中所有项目的所有配置 我不想在调用 MSBuild 时指定它们
  • 如何在 cypress 测试中公开/访问 Redux 等数据存储?

    The 赛普拉斯文档说你可以 公开数据存储 如 Redux 中 以便您可以直接从测试代码以编程方式更改应用程序的状态 我还观看了 Kent C Dodds 先生的测试课程 他提到可以使用 Cypress 中的现有数据来初始化 redux 存
  • C++ 中的并行赋值

    有没有办法在C 中进行并行赋值 目前 以下编译 带有警告 include
  • 设置文本字段的禁用背景颜色

    I have a textfield which I set seteditable false and setEnabled false but the problem is that in this case the backgroun
  • 如何实现rabbitMQ的单消费者多队列模型

    我发现这张图片与我的商业模式非常相似 我需要将消息拆分到某个队列 进行一些繁重的工作 我可以为他们添加更多的工作线程 但对于一些人来说 没有太多繁重的工作 我可以 让单个消费者订阅他们的消息 但是在rabbitMQ 中如何做到这一点呢 通过
  • Rails 3 中具有数组格式的 find_by_sql

    美好的一天伙计们 我在用着find by sql 在 Rails 3 中按如下方式获取记录 list Email find by sql SELECT FROM Emails WHERE sent id params id 如果多个参数适用
  • SwiftUI如何调整不同的屏幕尺寸

    我正在使用 SwiftUI 开发人员列表页面 iPhone X 屏幕足够大 但标题在 iPhone 8 中超出屏幕 iPhone X 然而 在 iPhone 8 或更小的屏幕中 查找人员 太靠近左侧 全部关注 甚至超出了屏幕 我知道在 UI
  • 如何在 python 中规范化二维 numpy 数组而不那么冗长?

    给定一个 3 乘以 3 的 numpy 数组 a numpy arange 0 27 3 reshape 3 3 array 0 3 6 9 12 15 18 21 24 为了标准化我想到的二维数组的行 row sums a sum axi
  • 将 Ninject 与 Udi Dahan 的领域事件结合使用

    我在 MVC 项目中使用 Ninject 并尝试按照 Udi Dahan 的模式实现领域事件http www udidahan com 2009 06 14 domain events salvation 在下面的摘录中 容器 用于解析已引
  • sqlite 数据库表在测试时被锁定

    我正在尝试将应用程序从 django 1 11 1 迁移到 django 2 0 1 测试设置为在内存数据库中使用 sqlite 运行 但每次测试都失败了 因为sqlite3 OperationalError database table
  • git 忽略异常

    我有一个 gitignore 文件 它使 git 忽略 dll文件 这实际上是我想要的行为 但是 如果我想要一个例外 即能够提交foo dll 我怎样才能做到这一点 Use dll Exclude all dlls foo dll Exce
  • 如何从左上到右填充 QGridLayout?

    我想填写一个QGridLayout with QWidgets The QWidgets需要以从左上到右上的方式出现 并在每行填充后继续向下填充QWidgets 类似且熟悉的 GUI 的一个例子是 Apple 如何在 iPhone 或 iP
  • 使用 XPath 查询从匹配的 XML 节点获取属性值

    这看起来并不困难 但我目前陷入困境 我正在尝试从与给定 XPath 查询字符串匹配的节点获取特定属性的属性值 这是我到目前为止所拥有的 public static IEnumerable
  • 如何在java中创建任意深度的嵌套数组?

    我正在尝试创建一个由数组的数组组成的数组等 但我不知道在运行时之前需要多少嵌套级别 根据输入 我可能需要int int int 或其他任何东西 对于上下文 我正在尝试构建一个N维网格对于元胞自动机 其中 N 作为参数传递 我没有任何代码给你
  • Maven“无法解析错误消息”(Java 7 + Maven 2)

    我有一个基于 Maven 的 GWT 项目 其中包括 Guava 我在 Maven 尝试 但失败 编译它在中找到的源代码时遇到了麻烦guava gwt jar could not parse error message symbol sta
  • 尝试通过 I2C 从 Arduino 获取数据时,出现 IOError:[Errno 121] python(树莓派)上的 smbus 远程 I/O 错误

    我遇到了问题 在启动通过 I2C 从 Arduino 请求数据的脚本时 python 有时会在我的 raspberry pi 3 上抛出这个 IOError 电气连接是完美的 所以这不是问题 此外 我在使用 i2cget y 1 0x04
  • 使用 javascript 旋转 3D 图片

    我开始开发一个广泛使用 javascript 的单页网站 该网站的主要目的是推广我的客户的产品 该网站将包含一张产品 3D 图像 当用户单击并拖动时 它应该相应旋转 请参阅下面的链接 我需要与以下链接中提到的完全相同的效果 单击此处获取链接