html中如何将图片做成3d,HTML+CSS+JavaScript实现图片3D展览的示例代码

html中如何将图⽚做成3d,HTML+CSS+JavaScript实现图⽚3D
展览的⽰例代码
⼀、图⽚3D展览效果
上传图⽚的⼤⼩有限制,录制的GIF图展⽰效果不是很好
⼆、代码实现
1. HTML代码
图⽚3D展览屋
html
{
overflow:visible;
-ms-touch-action: none;
-ms-content-zooming: none;
quartz插件}
body
{
position: absolute;
margin: 0px;
padding: 0px;
background: #fff;
width: 100%;
height: 100%;
}
#canvas
{
position: absolute;
width: 100%;
height: 100%;
background: #fff;
}
"use strict";
(function () {
/* ==== definitions ==== */
var diapo = [], layers = [], ctx, pointer, scr, camera, light, fps = 0, quality = [1, 2], // ---- poly constructor ----
Poly = function (parent, face) {
this.parent = parent;
< = ctx;
this.points = [];
if (!face.img) {
// ---- create points ----
银膜for (var i = 0; i < 4; i++) {
this.points[i] = ansform3D.Point(
parent.pc.x + (face.x[i] * alZ) + (face.z[i] * alX),
parent.pc.y + face.y[i],
parent.pc.z + (face.x[i] * alX) + (-face.z[i] * alZ)
);
}
this.points[3].next = false;
}
},
// ---- diapo constructor ----
Diapo = function (path, img, structure) {
// ---- create image ----
this.img = ansform3D.Image(
this, path + img.img, 1, {
isLoaded: function (img) {
img.parent.isLoaded = true;
img.parent.loaded(img);
}
}
);
this.visible = false;
// ---- point center ----
this.pc = ansform3D.Point(img.x, img.y, img.z); // ---- target positions ----
< = img.x + ( * Math.sqrt(camera.focalLength) * 20); = img.z - ( * Math.sqrt(camera.focalLength) * 20); // ---- create polygons ----
this.poly = [];
for (var i = -1, p; p = structure[++i]; ) {
layers[i] = (p.img === true ? 1 : 2);
this.poly.push(
new Poly(this, p)
);
}
},
// ---- init section ----
init = function (json) {
// draw poly primitive
Poly.prototype.drawPoly = ansform3D.drawPoly;
// ---- init screen ----
scr = new ge1doot.Screen({
container: "canvas"
});
ctx = ;
// ---- init pointer ----
pointer = new ge1doot.Pointer({
tap: function () {
if (camera.over) {
if (camera.over === camera.target.elem) {
// ---- return to the center ----
camera.target.x = 0;
乐器架
camera.target.z = 0;道口报警器
camera.target.elem = false;
} else {
// ---- goto diapo ----
camera.target.elem = camera.over;
camera.target.x = ;
camera.target.z = ;
// ---- adapt tesselation level to distance ----for (var i = 0, d; d = diapo[i++]; ) {
var dx = camera.target.x - d.pc.x;
var dz = camera.target.z - d.pc.z;
var dist = Math.sqrt(dx * dx + dz * dz);
var lev = (dist > 1500) ? quality[0] : quality[1];文具盒生产过程
d.img.setLevel(lev);
蚀刻工艺}
}
}
}
});
// ---- init camera ----
camera = ansform3D.Camera({
focalLength: Math.sqrt(scr.width) * 10,
easeTranslation: 0.025,
easeRotation: 0.06,
disableRz: true
}, {
move: function () {
this.over = false;
// ---- rotation ----
if (pointer.isDraging) {
this.target.elem = false;
= -pointer.Xi * 0.01;
= (pointer.Y - scr.height * 0.5) / (scr.height * 0.5); } else {
if (this.target.elem) {
= Math.atan2(
this.target.elem.pc.x - this.x,
this.target.elem.pc.z - this.z
);
}
}
*= 0.9;
}
});
camera.z = -10000;
camera.py = 0;
/
/ ---- create images ----
for (var i = 0, img; img = json.imgdata[i++]; ) {
diapo.push(
new Diapo(
json.options.imagesPath,
img,
json.structure
)
);

本文发布于:2024-09-23 04:17:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/219765.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:录制   代码   展览   图展   效果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议