1

这听起来可能很愚蠢,但我正在寻找一种方法来为 x3dom 对象的每一侧提供 ID,比如说立方体,这样我就可以为每个人的脸创建不同的属性。到目前为止,我看到的唯一方法是“def”函数。如果任何人都可以提供一个简单的立方体样本,那将非常有帮助。提前谢谢你。

4

1 回答 1

0

def 用于定义形状以供重用,您可以定义对象然后在场景中重用它。用于制作类似树木的森林。x3dom 网站上的一个示例在这里只是看看源代码。

http://x3dom.org/x3dom/example/x3dom_defUse.xhtml

如果你只使用一个 x3d Box 定义每一面是不可能的,因为它是一个原始形状,盒子上的 def 或 id 将无法影响单个面

如果您使用索引三角形集,它们中的每一个都可以通过这种方式分配一个 id

更多关于他们在这里

http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter13-GeometryTrianglesQuadrilaterals/_pages/page03.html

了解如何使用 css id

http://x3dom.org/docs/dev/tutorial/styling.html

这是一个简单的例子,同时使用标签和id的getelement

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<link rel="stylesheet" type="text/css" href="http://x3dom.org/x3dom/example/x3dom.css"></link>
<script type="text/javascript" src = "http://x3dom.org/x3dom/example/x3dom.js"></script>
</head>
<body>
<X3D width="500px" height="400px" showLog='true' showStat="true">
<Scene DEF='scene' >
<Shape >
<Box onclick="toggleRendering();" onmouseover="toggleRendering2();" onmouseout="toggleRendering3();" />        
<Appearance><Material id="themat" diffuseColor='0 1 0' /></Appearance>
</Shape>
</Scene>
</X3D>
<script>
var flag = true;

function toggleRendering()
{
flag = !flag;

var aMat = document.getElementById("themat");

if (flag) aMat.diffuseColor = "1 0 0";
else aMat.diffuseColor = "0 0 1";

return false;
}

function toggleRendering2()
{
var mat = document.getElementsByTagName("Material");
var aMat = mat[0];

aMat.diffuseColor = "1 1 1";

return false;
}

function toggleRendering3()
{
var mat = document.getElementsByTagName("Material");
var aMat = mat[0];

aMat.diffuseColor = "0 0 0";

return false;
}
</script>

</body>
</html>
于 2013-02-04T22:57:25.863 回答