我试图用一个带有消失点的Actionscript 3绘制一个10x10网格 - 所以每个方块看起来都像是朝向屏幕(每个方块都是从它自己的相对角度来看)。
我发现了很多关于3D透视立方体的教程,但它们都围绕着运动。当然,静态形状必须更容易,但我还没有找到任何关于它们的帮助。
在我的情况下,我是否有某些方法可以使用PerspectiveProjection()来解决这个问题?它看起来正是我想要的,但似乎依赖于运动。
或者还有其他3D透视对象创建方法吗? 如果可能的话,我更喜欢使用内部AS3功能。 我最接近的是这个tutorial,我可能适用于我的情况,但我想确保在尝试之前没有更简单/更清洁的方式。
感谢。
答案 0 :(得分:1)
这是实现您所追求目标的最快且可能最推荐的方式:
完成此操作后,创建一个文档类并在其中粘贴我为您创建的代码,以便您入门:
package
{
import org.papervision3d.view.BasicView;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.ColorMaterial;
/**
* Document class.
* @author Marty Wallace.
*/
public class Base extends BasicView
{
/**
* Constructor.
*/
public function Base()
{
// Create an array of faces for your cube.
var faces:Array = [
"front",
"back",
"left",
"right",
"top",
"bottom"
];
// Create a list of materials, which contains a material for each face of the cube.
var list:MaterialsList = new MaterialsList();
// Create a new material for each face.
for each(var i:String in faces)
{
// Define the material.
var material:ColorMaterial = new ColorMaterial(Math.random()*0xFFFFFF);
// Add your material to the face represented by i.
list.addMaterial(material, i);
}
// Create the Cube.
var cube:Cube = new Cube(list, 250, 250, 250);
// Rotate the cube to however required.
cube.rotationX = Math.random()*360;
cube.rotationY = Math.random()*360;
cube.rotationZ = Math.random()*360;
// Add the cube to the scene.
scene.addChild(cube);
// Render the cube.
startRendering();
}
}
}
大多数代码都是非常自我解释的,并且有针对此特定框架的uint.MAX_VALUE
教程。
享受!