Three.js在没有translateZ

时间:2017-01-16 05:58:04

标签: javascript three.js rotation

与许多其他类似的问题一样,我想根据其轮换在three.js中移动一个对象。不同的是,我不能使用object.translateZ。这是因为我正在使用物理模拟器,如果我像这样更新对象,它会搞砸。以下是我的问题的fiddle示例。随意使用我的小提琴,并将您的更新版本添加到您的答案。

我希望通过基于mesh.position.x更新mesh.position.zmesh.rotation.y来推进多维数据集。

要记住,我有时会意识到three.js使用mesh.rotation.y访问private void Generate_PDF() { StringWriter sw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); StringBuilder sb = new StringBuilder(); StringBuilder sb1 = new StringBuilder(); //Generate Invoice (Bill) Header. sb.Append("<table width='100%' cellspacing='0' cellpadding='2'>"); sb.Append("<tr><td align='center' style='background-color: #18B5F0' colspan = '2'><b>Bill Report</b></td></tr>"); sb.Append("<tr><td colspan = '2'></td></tr>"); sb.Append("<tr><td><b>Bill No: </b>"); sb.Append(HiddenField1.Value); sb.Append("</td><td align = 'right'><b>Date: </b>"); sb.Append(DateTime.Now); sb.Append(" </td></tr>"); sb.Append("</table>"); sb.Append("<br />"); GridOfTestRequest.RenderControl(hw); StringReader sr = new StringReader(sw.ToString()); StringReader sr1 = new StringReader(sb.ToString()); sb1.Append("<table border = '1'>"); sb1.Append("<tr><td align = 'right' colspan = '"); sb1.Append(GridOfTestRequest.HeaderRow.Cells.Count - 1); sb1.Append("'>Total</td>"); sb1.Append("<td>"); sb1.Append(testList.Sum(x=>x.testFee)); sb1.Append("</td>"); sb1.Append("</tr></table>"); StringReader sr2 = new StringReader(sb1.ToString()); testList.Clear(); GridOfTestRequest.DataSource = null; GridOfTestRequest.DataBind(); Document pdfDoc = new Document(PageSize.A5, 10f, 10f, 10f, 0f); HTMLWorker htmlparser = new HTMLWorker(pdfDoc); PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream); pdfDoc.Open(); htmlparser.Parse(sr1); htmlparser.Parse(sr); htmlparser.Parse(sr2); pdfDoc.Close(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=Invoic.pdf"); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Write(pdfDoc); Response.Flush(); Response.ClearContent(); Response.Clear(); Response.Cookies.Clear(); Response.End(); } 轮次有点奇怪。

谢谢!

2 个答案:

答案 0 :(得分:4)

我建议使用mesh.getWorldDirection()来获取想要移动网格的方向。然后你可以用标量乘以它来调整移动速度。

direction = mesh.getWorldDirection();

mesh.position.add(direction.multiplyScalar(moveSpeed));

小提琴:https://jsfiddle.net/k1swrxjr/1/

祝你好运!

答案 1 :(得分:0)

要移动网格,只需增加网格所需位置的值,而不是init函数,例如:

function animate() {
        mesh.position.x += 0.1;
        requestAnimationFrame( animate );
        renderer.render( scene, camera );
    }

每次运行animate()时,此示例代码都会将网格的x位置增加0.1。