API العام يتغير بـ Aspose.3D 2.0.0
Contents Sأوماري
- يضيف تنسيق Collada
- يضيف Aspose.ThreeD. Rendertarget. IRenderTexture/irendexwindow/ITextureUnit واجهات و Aspose.ThreeD. Renderuport. Viewport/initializationdisception/renderclasses/type/type
- تضيف Aspose.ThreeD.Render.PostProcessing class
- تضيف طريقة GetBoundingBox إلى Aspose.ThreeD.Node class ، وتضيف فئات جديدة Aspose.ThreeD. Uildings. BoundingBox و Aspose.ThreeD. Ulevelvides. Boundingboxdity
- Dering ial-الوقت R
- تتم إضافة طرق AddData إلى Aspose.ThreeD. Enties. Vertexelementuvs class
يضيف تنسيق Collada
في هذا الإصدار (2.0.0) ، يمكن للمطورين استيراد ملفات Collada 3D ، وبالتالي تتم إضافة خاصية Collada في فئة Aspose.ThreeD.FileFormat.
يضيف Aspose.ThreeD. Rendertarget. IRenderTexture/irendexwindow/ITextureUnit واجهات و Aspose.ThreeD. Renderuport. Viewport/initializationdisception/renderclasses/type/type
فئات منفذ العرض والعدد الجدد هي الفئات الرئيسية التي تساعد على التقاط مشاهدات لمشهد 3D والحفظ في نسيج أو نافذة. جميع تفاصيل دروس المساعدة الأخرى هي كما يلي:
- Aspose. طبقة استثنائية من ThreeD. Riverclass-يتم لف الاستثناءات من المستأجر الداخلي كما في وقت لاحق في وقت لاحق.
- Aspose. طبقة استثناء ثلاثية. تقديم. Initialization-يتم طرح هذا الاستثناء في حين فشل في تهيئة العارض ، على سبيل المثال لبدء ذلك على الكمبيوتر الذي ليس لديه دعم الأجهزة من OpenGL 4.0.
- Ienواجهة واجهة-It هو واجهة قاعدة من IenenderTexture/IenenderWindow.
- Ienواجهة exture-It يسمح لتقديم المشهد إلى واحد أو أكثر من القوام (القوام تقع في ذاكرة الفيديو ويمكن نقلها إلى ذاكرة النظام).
- Ienواجهة indow-It يسمح لتقديم المشهد إلى نافذة في الوقت الحقيقي.
- Iexواجهة extureUنيت-IexextureUnit هو عينة الملمس في الجانب GPside وبيانات الملمس في CPU أو GPU الذاكرة.
- TextureTنوع enum-It يحدد نوع من القوام ، مثل exexture1D ، Texture2D ، exexture3D ، CubeMap و Array2D.
- الفئة الفنية-It يساعد في تقديم مشهد للقوام أو نافذة في الوقت الحقيقي.
- RenderPأقطار الفئة-It يحدد المعلمات حول كيفية إنشاء الهدف تقديم مثل بت اللون ، بت عمق ، بت الاستنسل والتخزين المؤقت المزدوج.
التقط منافذ العرض لمشهد 3D وترجمه إلى نسيج أو نافذة
C#
// load an existing 3D scene
Scene scene = new Scene("scene.obj");
// create an instance of the camera
Camera camera = new Camera();
scene.RootNode.CreateChildNode("camera", camera).Transform.Translation = new Vector3(2, 44, 66);
// set the target
camera.LookAt = new Vector3(50, 12, 0);
//create a light
scene.RootNode.CreateChildNode("light", new Light() {Color = new Vector3(Color.White), LightType = LightType.Point}).Transform.Translation = new Vector3(26, 57, 43);
// the CreateRenderer will create a hardware OpenGL-backend renderer
// and some internal initializations will be done.
// when the renderer left using the scope, the unmanaged hardware resources will also be disposed
using (var renderer = Renderer.CreateRenderer())
{
renderer.EnableShadows = false;
// create a new render target that renders the scene to texture(s)
// use default render parameters
// and one output targets
// size is 1024 x 1024
// this render target can have multiple render output textures, but here we only need one output.
// The other textures and depth textures are mainly used by deferred shading in the future.
// but you can also access the depth texture through IRenderTexture.DepthTeture
// use CreateRenderWindow method to render in window, like:
// window = renderer.RenderFactory.CreateRenderWindow(new RenderParameters(), Handle);
using (IRenderTexture rt = renderer.RenderFactory.CreateRenderTexture(new RenderParameters(), 1, 1024, 1024))
{
//this render target has one viewport to render, the viewport occupies the 100% width and 100% height
Viewport vp = rt.CreateViewport(camera, new RelativeRectangle() {ScaleWidth = 1, ScaleHeight = 1});
//render the target and save the target texture to external file
renderer.Render(rt);
rt.Targets[0].Save("file-1viewports.png", ImageFormat.Png);
//now let's change the previous viewport only uses the half left side(50% width and 100% height)
vp.Area = new RelativeRectangle() {ScaleWidth = 0.5f, ScaleHeight = 1};
//and create a new viewport that occupies the 50% width and 100% height and starts from 50%
//both of them are using the same camera, so the rendered content should be the same
rt.CreateViewport(camera, new RelativeRectangle() {ScaleX = 0.5f, ScaleWidth = 0.5f, ScaleHeight = 1});
//but this time let's increase the field of view of the camera to 90 degree so it can see more part of the scene
camera.FieldOfView = 90;
renderer.Render(rt);
rt.Targets[0].Save("file-2viewports.png", ImageFormat.Png);
}
}
تضيف Aspose.ThreeD.Render.PostProcessing class
تسمح فئة roostProcessing للمطورين بتطبيق فلتر معالجة الصور في الوقت الحقيقي على الصورة المقدمة. In هذا الإصدار 2.0.0 ، لقد قدمنا 4 المدمج في آثار ما بعد المعالجة. سوف تسمح We للمطورين بالحصول على خوارزمية ما بعد المعالجة المخصصة الخاصة بهم في الإصدار المستقبلي.
تطبيق تأثيرات بصرية على توفير 3D مشاهدة
C#
// load an existing 3D scene
Scene scene = new Scene("scene.obj");
// create an instance of the camera
Camera camera = new Camera();
scene.RootNode.CreateChildNode("camera", camera).Transform.Translation = new Vector3(2, 44, 66);
// set the target
camera.LookAt = new Vector3(50, 12, 0);
//create a light
scene.RootNode.CreateChildNode("light", new Light() { Color = new Vector3(Color.White), LightType = LightType.Point }).Transform.Translation = new Vector3(26, 57, 43);
// the CreateRenderer will create a hardware OpenGL-backend renderer, more renderer will be added in the future
// and some internal initializations will be done.
// when the renderer left using the scope, the unmanaged hardware resources will also be disposed
using (var renderer = Renderer.CreateRenderer())
{
renderer.EnableShadows = false;
// create a new render target that renders the scene to texture(s)
// use default render parameters
// and one output targets
// size is 1024 x 1024
// this render target can have multiple render output textures, but here we only need one output.
// The other textures and depth textures are mainly used by deferred shading in the future.
// but you can also access the depth texture through IRenderTexture.DepthTeture
using (IRenderTexture rt = renderer.RenderFactory.CreateRenderTexture(new RenderParameters(), 1, 1024, 1024))
{
// this render target has one viewport to render, the viewport occupies the 100% width and 100% height
Viewport vp = rt.CreateViewport(camera, new RelativeRectangle() { ScaleWidth = 1, ScaleHeight = 1 });
//render the target and save the target texture to external file
renderer.Render(rt);
rt.Targets[0].Save("Original_viewport.png", ImageFormat.Png);
// create a post-processing effect
PostProcessing pixelation = renderer.GetPostProcessing("pixelation");
renderer.PostProcessings.Add(pixelation);
renderer.Render(rt);
rt.Targets[0].Save("VisualEffect_pixelation.png", ImageFormat.Png);
//clear previous post-processing effects and try another one
PostProcessing grayscale = renderer.GetPostProcessing("grayscale");
renderer.PostProcessings.Clear();
renderer.PostProcessings.Add(grayscale);
renderer.Render(rt);
rt.Targets[0].Save("VisualEffect_grayscale.png", ImageFormat.Png);
//we can also combine post-processing effects
renderer.PostProcessings.Clear();
renderer.PostProcessings.Add(grayscale);
renderer.PostProcessings.Add(pixelation);
renderer.Render(rt);
rt.Targets[0].Save("VisualEffect_grayscale+pixelation.png", ImageFormat.Png);
//clear previous post-processing effects and try another one
PostProcessing edgedetection = renderer.GetPostProcessing("edge-detection");
renderer.PostProcessings.Clear();
renderer.PostProcessings.Add(edgedetection);
renderer.Render(rt);
rt.Targets[0].Save("VisualEffect_edgedetection.png", ImageFormat.Png);
//clear previous post-processing effects and try another one
PostProcessing blur = renderer.GetPostProcessing("blur");
renderer.PostProcessings.Clear();
renderer.PostProcessings.Add(blur);
renderer.Render(rt);
rt.Targets[0].Save("VisualEffect_blur.png", ImageFormat.Png);
}
}
تضيف طريقة GetBoundingBox إلى Aspose.ThreeD.Node class ، وتضيف فئات جديدة Aspose.ThreeD. Uildings. BoundingBox و Aspose.ThreeD. Ulevelvides. Boundingboxdity
تمثل فئات BoundingBox وفئات Boundingboxday مربع محاط بعقدة 3D. يمكن للمطورين إعادة ضبط الكاميرا ، وحساب الارتفاع من الصندوق المحاصر. يعني المربع اللانهائي أو الفارغ أن المشهد لا يحتوي على أشكال هندسية ولا يضبط ارتفاع الكاميرا إلا عندما يكون محدودًا.
Dering ial-الوقت R
It يسمح للمطورين لأداء تقديم عالية الأداء في الوقت الحقيقي على إطار GUI مثل orinForms ، انها GUindependent إطار مستقل ، وبالتالي فإن الأطر GGGالأخرى يجب أيضا دعم هذا.
تتم إضافة طرق AddData إلى Aspose.ThreeD. Enties. Vertexelementuvs class
لقد تغيرت فئة قاعدة he he erertexEleرقيق V من اللوحة الرئيسية