我开始在一个广泛使用javascript的单页网站上工作。本网站的主要目的是宣传我的客户产品。该网站将包含一个产品3d图像。当用户点击并拖动时,它应该旋转。请参阅下面的链接。我需要与以下链接中提到的完全相同的效果
如何在不使用magic 360
的情况下使用javascript实现此目的?在我搜索时请给我一些文章或教程链接,但找不到任何教程。
答案 0 :(得分:5)
这是我刚刚拼凑的一些javascript。选择一个预先构建的库(用于浏览器兼容性等),但是当你有机会深入了解实际发生的事情时。 注意我在答案提交表单中写了这个,因此可能存在语法和其他错误
<!-- 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>
答案 1 :(得分:4)
答案 2 :(得分:4)
您可以使用GIF或一系列图像。我的(首选但不是最简单的)方法是使用THREE.js和WebGL在Sketchup或Collada中制作模型,然后将其放入js中,代码非常简单,它也为您提供了照明效果!
http://carvisualizer.plus360degrees.com/threejs/
这是^它可以做的一个例子。
这是我为你掀起的快速演示。
http://deepschool.kd.io/Pages/Experiments/ThreeJs/clickcontroltestone.htm
geometry = new THREE.CubeGeometry(200, 200, 200);
material = new THREE.MeshPhongMaterial({
color: 0xffffff
});
cube = new THREE.Mesh(geometry, material);
scene.add(cube);
将 geometry 替换为您的文件,您就拥有了旋转模型!
您甚至可以感知点击和悬停等,并使模型成为互动!
请参阅此参考:https://github.com/mrdoob/three.js/wiki/Using-SketchUp-Models
希望我帮助过:)
答案 3 :(得分:3)
http://www.uize.com/examples/3d-rotation-viewer.html
Google搜索旋转3d图像javascript。查看源代码并复制Uize.js