HTML调用3Dmax,javascript – 使用HTML JS在Canvas中绘制3d

是否有任何框架/引擎能够在Canvas上绘制3D图像?

我打算在一个平面上绘制一些基元(不同的形状):

var dist = 2;

var hexHalfW = 35;

var lengthX = 20;

var hexR = Math.sqrt(lengthX*lengthX+hexHalfW*hexHalfW);//40.31128874

var hexDiag = 2*hexR;

var hexHeight = hexDiag;

var hexWidth = 2*hexHalfW;

function DrawHex(ctx, x, y)

{

var cx = x*(hexWidth + dist) - y*(hexWidth + dist)/2;

var cy = y*(hexR + lengthX + dist);

ctx.beginPath();

ctx.moveTo(cx, cy-hexR);

ctx.lineTo(cx+hexHalfW, cy-hexR+lengthX);

ctx.lineTo(cx+hexHalfW, cy+hexR-lengthX);

ctx.lineTo(cx, cy+hexR);

ctx.lineTo(cx-hexHalfW, cy+hexR-lengthX);

ctx.lineTo(cx-hexHalfW, cy-hexR+lengthX);

ctx.lineTo(cx, cy-hexR);

ctx.fill();

}

function draw()

{

var canvas = document.getElementById('tutorial');

if (canvas.getContext)

{

var ctx = canvas.getContext('2d');

//Pick Hexagon color, this one will be blue

ctx.fillStyle = "rgb(0, 0, 255)"; DrawHex(ctx, 1, 1);

ctx.fillStyle = "rgb(0, 0, 225)"; DrawHex(ctx, 3, 1);

ctx.fillStyle = "rgb(0, 0, 195)"; DrawHex(ctx, 4, 1);

ctx.fillStyle = "rgb(0, 0, 165)"; DrawHex(ctx, 6, 1);

ctx.fillStyle = "rgb(0, 255, 0)"; DrawHex(ctx, 3, 2);

ctx.fillStyle = "rgb(0, 225, 0)"; DrawHex(ctx, 4, 2);

ctx.fillStyle = "rgb(0, 195, 0)"; DrawHex(ctx, 5, 2);

}

}

我想在“透视”中绘制这些基元:更接近的形状(在屏幕的底部)将更大,“远离”的形状(在屏幕的顶部)需要更小…

为此,需要重新计算形状坐标.

猜猜,我可以找到一些允许重新计算坐标并编写适当函数的公式……但是,可能有一些引擎已经在做了吗?

请指教.

欢迎任何想法!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值