public override void Run(RenderControl render) { // add a plane var mMaterial1 = MeshPhongMaterial.Create("phong.texture"); mMaterial1.SetFaceSide(EnumFaceSide.DoubleSide); var texture = ImageTexture2D.Create(GetResourcePath("textures/bricks2.jpg")); mMaterial1.SetColorMap(texture); var plane = GeometryBuilder.CreatePlane(500, 500); var planeNode = new PrimitiveSceneNode(plane, mMaterial1); planeNode.SetTransform(Matrix4.makeTranslation(new Vector3(0, 0, -2.5f))); planeNode.SetPickable(false); render.ShowSceneNode(planeNode); mDevice = new PrimitiveSceneNode(GeometryBuilder.CreateSphere(5), null); render.ShowSceneNode(mDevice); mCome = new RigidAnimation(); mCome.Add(new MoveAnimationClip(mDevice, mWorkingPosition, 0, 5)); mGo = new RigidAnimation(); mGo.Add(new MoveAnimationClip(mDevice, new Vector3(-200, -200, 0), 0, 5)); }
public override void Run(RenderControl render) { if (!ReadData()) { return; } var material = MeshPhongMaterial.Create("cae-material"); material.GetTemplate().SetVertexColors(true); material.SetFaceSide(EnumFaceSide.DoubleSide); var position = BufferAttribute.Create(EnumAttributeSemantic.Position, EnumAttributeComponents.Three, mPositions); var color = BufferAttribute.Create(EnumAttributeSemantic.Color, EnumAttributeComponents.Three, mColors); BufferGeometry geometry = new BufferGeometry(); geometry.AddAttribute(position); geometry.AddAttribute(color); NormalCalculator.ComputeVertexNormals(geometry); var node = new PrimitiveSceneNode(geometry, EnumPrimitiveType.TRIANGLES, material); node.SetPickable(false); PaletteWidget pw = new PaletteWidget(); pw.Update(mColorTable); render.ShowSceneNode(pw); render.ShowSceneNode(node); }
public override void Run(RenderControl render) { CreateShader(); mMaterial = MaterialManager.Instance().FindInstance("blackHole_instance"); if (mMaterial == null) { var template = MaterialManager.Instance().CreateTemplateByName("blackHole_shader_template", shaderName); mMaterial = MaterialManager.Instance().Create("blackHole_instance", template); } var plane = GeometryBuilder.CreatePlane(2, 2); var node = new PrimitiveSceneNode(plane, mMaterial); node.SetPickable(false); render.ShowSceneNode(node); }
public override void Run(RenderControl render) { // prepare points data const int COUNT = 300; var buffer = new Float32Buffer(0); buffer.Reserve(COUNT * 3); var colors = new Float32Buffer(0); Random random = new Random(); for (int i = 0; i < COUNT; i++) { float x = 2000 * (float)random.NextDouble() - 1000; float y = 2000 * (float)random.NextDouble() - 1000; float z = 2000 * (float)random.NextDouble() - 1000; buffer.Append(x, y, z); colors.Append((float)random.NextDouble(), (float)random.NextDouble(), (float)random.NextDouble()); } var primitive = GeometryBuilder.CreatePoints(new Float32Array(buffer), new Float32Array(colors)); // prepare point material var material = PointsMaterial.Create("points-material"); material.SetSizeAttenuation(false); material.SetPointSize(15.0f); material.SetColorMap(ImageTexture2D.Create(GetResourcePath("textures/snowflake7_alpha.png"))); material.SetTransparent(true); // enable vertex color material.GetTemplate().SetVertexColors(true); // add to scene var node = new PrimitiveSceneNode(primitive, material); node.SetPickable(false); render.ShowSceneNode(node); }
public override void Run(RenderControl render) { mGeometry = GeometryBuilder.CreatePlane(20000, 20000, worldWidth - 1, worldDepth - 1); var position = mGeometry.GetGeometry().GetAttribute(0); position.SetDataUsage(EnumBufferDataUsage.DYNAMIC_DRAW); var mPosition = new Float32Array(position.GetData()); for (uint i = 0; i < position.GetCount() / 3; i++) { float z = (float)(35 * Math.Sin(i / 2)); mPosition.SetValue(i * 3 + 2, z); } var material = BasicMaterial.Create("basic-water"); var img = FileImage.Create(GetResourcePath("textures/water.png")); var texture = new ImageTexture2D(); texture.SetSource(img); var desc = texture.GetDesc(); desc.SetWrapS(EnumTextureWrappingType.REPEAT); desc.SetWrapT(EnumTextureWrappingType.REPEAT); texture.SetRepeat(new Vector2(5, 5)); material.AddTexture("map", texture); var color = Vector3.ColorFromHex(0x0044ff); material.SetUniform("diffuse", Uniform.Create(color)); var node = new PrimitiveSceneNode(mGeometry, material); node.SetPickable(false); node.SetCulling(false); render.ShowSceneNode(node); }
public override void Run(RenderControl render) { if (!mLoaded) { mLoaded = true; FontManager.Instance().AddFont("LS", @"C:\Windows\Fonts\STLITI.TTF"); } { var fontMaterial = FontMaterial.Create("font-texture-1"); fontMaterial.SetFaceSide(EnumFaceSide.DoubleSide); fontMaterial.SetColor(new Vector3(1, 1, 0)); fontMaterial.SetBackground(new Vector3(0, 0, 1)); fontMaterial.SetBillboard(true); var dim = fontMaterial.SetText("Hello 世界!", 128, "LS"); var shape = GeometryBuilder.CreatePlane(dim.x * 0.1f, dim.y * 0.1f); var node = new PrimitiveSceneNode(shape, fontMaterial); node.SetPickable(false); render.ShowSceneNode(node); } { var fixedSizeMaterial = SpriteMaterial.Create("font-mesh-material"); fixedSizeMaterial.SetSizeAttenuation(false); fixedSizeMaterial.SetColor(ColorTable.Green); var mesh = FontManager.Instance().CreateMesh("哈哈"); var node = new PrimitiveSceneNode(mesh, fixedSizeMaterial); var scale = 1 / 2200.0f; node.SetTransform(Matrix4.makeTranslation(0, 0, 10) * Matrix4.makeScale(scale, scale, scale)); node.SetPickable(false); render.ShowSceneNode(node); } }