<?xml version="1.0"?>
<rss version="2.0"><channel><title>TViewPort3D &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;</title><link>https://fire-monkey.ru/forum/22-tviewport3d/</link><description>TViewPort3D &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432;</description><language>ru</language><item><title>&#x41A;&#x430;&#x43A; &#x43D;&#x430;&#x431;&#x43B;&#x44E;&#x434;&#x430;&#x442;&#x44C; &#x43E;&#x434;&#x43D;&#x43E;&#x432;&#x440;&#x435;&#x43C;&#x435;&#x43D;&#x43D;&#x43E; &#x43D;&#x435;&#x441;&#x43A;&#x43E;&#x43B;&#x44C;&#x43A;&#x43E;  &#x432;&#x438;&#x434;&#x43E;&#x432; &#x43D;&#x430; 3D &#x43E;&#x431;&#x44A;&#x435;&#x43A;&#x442;</title><link>https://fire-monkey.ru/topic/4759-%D0%BA%D0%B0%D0%BA-%D0%BD%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D1%82%D1%8C-%D0%BE%D0%B4%D0%BD%D0%BE%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D0%B2%D0%B8%D0%B4%D0%BE%D0%B2-%D0%BD%D0%B0-3d-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82/</link><description><![CDATA[
<p>
	Как вывести изображения 3D объектов с разных камер(TCamera1 и TCamera2) в разные Вьюверы (TViewport3D1 и TViewport2). То есть в первом вьювере нарисован объект и на него смотрит две камеры. С первой камеры мы транслируем изображение в первый вьювер, а вот как вторую камеру заставить транслировать изображение во второй вьювер. Это нужно для того, чтобы наблюдать несколько видов объекта одновременно.
</p>

<p>
	<a class="ipsAttachLink" data-fileid="3638" href="https://fire-monkey.ru/applications/core/interface/file/attachment.php?id=3638" rel="">CamView.rar</a>
</p>
]]></description><guid isPermaLink="false">4759</guid><pubDate>Mon, 05 Feb 2018 18:40:25 +0000</pubDate></item><item><title>&#x41E;&#x442;&#x43E;&#x431;&#x440;&#x430;&#x437;&#x438;&#x442;&#x44C; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x439; &#x444;&#x43E;&#x440;&#x43C;&#x435; &#x438;&#x437;&#x43E;&#x431;&#x440;&#x430;&#x436;&#x435;&#x43D;&#x438;&#x44F; &#x43E;&#x434;&#x43D;&#x43E;&#x433;&#x43E; &#x43E;&#x431;&#x44A;&#x435;&#x43A;&#x442;&#x430;  &#x441; &#x440;&#x430;&#x437;&#x43D;&#x44B;&#x445; &#x43A;&#x430;&#x43C;&#x435;&#x440;.</title><link>https://fire-monkey.ru/topic/4756-%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%B8%D1%82%D1%8C-%D0%BD%D0%B0-%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9-%D1%84%D0%BE%D1%80%D0%BC%D0%B5-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0-%D1%81-%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D1%85-%D0%BA%D0%B0%D0%BC%D0%B5%D1%80/</link><description><![CDATA[<p>
	Есть 3D кубик, необходимо получить его изображение с двух камер (Tcamera) на одной форме, например в двух TWievPort. Нужно, чтобы движения кубика одновременно отображались с двух камер.
</p>]]></description><guid isPermaLink="false">4756</guid><pubDate>Mon, 05 Feb 2018 08:44:49 +0000</pubDate></item><item><title><![CDATA[2D<>3D координаты]]></title><link>https://fire-monkey.ru/topic/4163-2d3d-%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D1%8B/</link><description><![CDATA[<p>
	Возможно название темы не правильно задал, но просто не понимаю сути вопроса <img alt=":)" data-emoticon="" height="20" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" srcset="https://fire-monkey.ru/uploads/emoticons/smile@2x.png 2x" title=":)" width="20" data-src="https://fire-monkey.ru/uploads/emoticons/default_smile.png"></p>

<p>
	Есть ViewPort3D, на нем TDummy, на котором рисую модель.
</p>

<p>
	Вопрос вот в чем, модель может быть как большая, так и маленькая, как мне вписать ее в размеры ViewPort3D?
</p>

<p>
	Разумеется все максимальные и минимальные координаты модели мне известны, но вот как их использовать не могу сообразить.
</p>

<p>
	 
</p>]]></description><guid isPermaLink="false">4163</guid><pubDate>Sun, 14 May 2017 11:06:03 +0000</pubDate></item><item><title>&#x41D;&#x430;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; Effects  &#x43D;&#x430; 3DShapes &#x438; 3DLayers</title><link>https://fire-monkey.ru/topic/4153-%D0%BD%D0%B0%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-effects-%D0%BD%D0%B0-3dshapes-%D0%B8-3dlayers/</link><description><![CDATA[<p>
	Здравствуйте.
</p>

<p>
	Подскажите что не так делаю.
</p>

<p>
	1. При расположении на сцене TTextLayer3D перед 3D объектами - фон текста - непрозрачный. Если поместить TTextLayer3D в 3D объект, тогда фон текста станет прозрачным, для родительского объекта, но останется непрозрачным для "братьев" и "сестер". (рис. 1.jpg, 2.jpg и 21.jpg)
</p>

<p>
	2. При применении скажем TGlowEffect к объекту стоящему за другим объектом, эффект просвечивает сквозь него. (рис. 4.jpg)
</p>

<p>
	3. При применении эффекта к объекту стоящему за другим объектом, при условии что объект находящийся позади не является дочерним, стоящего спереди - в добавок к тому что эффект начинает просвечивать сквозь ближнего, так еще и появляется белая рамка вокруг "заднего" объекта. (рис. 3.jpg)
</p>

<p>
	4. При применении эффекта к TTextLayer3D, эффект применяется только к левой верхней четверти объекта. (рис. 5.jpg)
</p>

<p>
	пробовал на RAD Studio XE5, XE6, XE8, jap.10.2
</p>

<p><a href="https://fire-monkey.ru/uploads/monthly_2017_05/21.jpg.00eb3d046f4c5a8e0abf40d7fbef7013.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="3070" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" class="ipsImage ipsImage_thumbnailed" alt="21.jpg" data-src="https://fire-monkey.ru/uploads/monthly_2017_05/21.thumb.jpg.7c4f4d44a3672ff0693533c59ff24c17.jpg" width="1000" data-ratio="51,5"></a></p>
<p><a href="https://fire-monkey.ru/uploads/monthly_2017_05/5.jpg.4c30530307de2473eacc9ca2a24ee7ce.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="3069" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" class="ipsImage ipsImage_thumbnailed" alt="5.jpg" data-src="https://fire-monkey.ru/uploads/monthly_2017_05/5.thumb.jpg.4e50cc73b0b181f1ae5a6e9dd09e2580.jpg" width="1000" data-ratio="49,7"></a></p>
<p><a href="https://fire-monkey.ru/uploads/monthly_2017_05/4.jpg.48a211284733ca894104fec9e859312e.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="3068" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" class="ipsImage ipsImage_thumbnailed" alt="4.jpg" data-src="https://fire-monkey.ru/uploads/monthly_2017_05/4.thumb.jpg.e42caad1821324bb0c7375492ed41201.jpg" width="1000" data-ratio="50,4"></a></p>
<p><a href="https://fire-monkey.ru/uploads/monthly_2017_05/2.jpg.dfd54cf35ef5629bc7743a1c86d1a153.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="3066" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" class="ipsImage ipsImage_thumbnailed" alt="2.jpg" data-src="https://fire-monkey.ru/uploads/monthly_2017_05/2.thumb.jpg.7b6cecf3e752ab9f3ff702d4ded71ff3.jpg" width="1000" data-ratio="52"></a></p>
<p><a href="https://fire-monkey.ru/uploads/monthly_2017_05/3.jpg.e57e4fc51546cf173dbc1595f59d0d43.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="3067" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" class="ipsImage ipsImage_thumbnailed" alt="3.jpg" data-src="https://fire-monkey.ru/uploads/monthly_2017_05/3.thumb.jpg.97081cd7e691b355480d9dd6dc1a900b.jpg" width="1000" data-ratio="51,5"></a></p>
<p><a href="https://fire-monkey.ru/uploads/monthly_2017_05/1.jpg.463eefdfcadadbb0f795aec772439837.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="3065" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" class="ipsImage ipsImage_thumbnailed" alt="1.jpg" data-src="https://fire-monkey.ru/uploads/monthly_2017_05/1.thumb.jpg.682c7d9da2188b0a7c44bfc24483adc6.jpg" width="1000" data-ratio="55,1"></a></p>]]></description><guid isPermaLink="false">4153</guid><pubDate>Wed, 10 May 2017 11:15:57 +0000</pubDate></item><item><title>Viewport3D Align=Client</title><link>https://fire-monkey.ru/topic/3293-viewport3d-alignclient/</link><description><![CDATA[<p>
	Положил на форму Viewport3D, а на него Layer3D и сделал обоим Align=Client. Все выравнилось по всей форме. Запускаю приложение на Android - выравнивание не делается вообще. Как правильно выравнивать на весь экран? 
</p>]]></description><guid isPermaLink="false">3293</guid><pubDate>Wed, 12 Oct 2016 19:05:41 +0000</pubDate></item><item><title>Viewport3D &#x432; &#x43F;&#x43E;&#x43B;&#x440;&#x430;&#x437;&#x43C;&#x435;&#x440;&#x430; &#x43D;&#x430; Retina iOS</title><link>https://fire-monkey.ru/topic/2584-viewport3d-%D0%B2-%D0%BF%D0%BE%D0%BB%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%B0-%D0%BD%D0%B0-retina-ios/</link><description><![CDATA[<p>
	Для отрисовки 3д эффектов создаю прозрачный Viewport и делаю ему align=client
</p>

<p>
	На ретине, будь то симулятор или железка при старте вьюпорт ведет себя в половинных координатах, дальше середины экрана даже не отрисовывает ничего.Это происходит до тех пор пока экран не повернешь хотя бы один раз.
</p>

<p>
	На симуляторе без ретины (такой железки нет) все сразу ок.
</p>

<p>
	На win32 и подавно все ок
</p>

<p>
	Seattle, Ios 9.3.1
</p>

<p>
	 
</p>

<p>
	Ну и заодно вопрос, как сделать чтобы TTextLayer3D был непрозрачным либо на какой аналог заменить
</p>

<p><a href="https://fire-monkey.ru/uploads/monthly_2016_04/wrongViewPort.png.39d836b91138783154b201c5911f597c.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="1685" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" class="ipsImage ipsImage_thumbnailed" alt="wrongViewPort.png" data-src="https://fire-monkey.ru/uploads/monthly_2016_04/wrongViewPort.png.39d836b91138783154b201c5911f597c.png" width="501" data-ratio="57,29"></a></p>
<p><a href="https://fire-monkey.ru/uploads/monthly_2016_04/normViewPort.png.0b5cd1992daaf820a5dd8474edbd2a39.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="1686" src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" class="ipsImage ipsImage_thumbnailed" alt="normViewPort.png" data-src="https://fire-monkey.ru/uploads/monthly_2016_04/normViewPort.png.0b5cd1992daaf820a5dd8474edbd2a39.png" width="491" data-ratio="30,96"></a></p>]]></description><guid isPermaLink="false">2584</guid><pubDate>Fri, 08 Apr 2016 10:32:18 +0000</pubDate></item><item><title>&#x413;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x44B; &#x432;&#x44C;&#x44E;&#x43F;&#x43E;&#x440;&#x442;&#x430;</title><link>https://fire-monkey.ru/topic/2397-%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B-%D0%B2%D1%8C%D1%8E%D0%BF%D0%BE%D1%80%D1%82%D0%B0/</link><description><![CDATA[
<p>Всем привет</p>
<p>Только начинаю осваивать FM и программирование 3D, встал вопрос.</p>
<p>Как узнать размеры вьюпорта в абсолютных(непиксельных) координатах по осям X и Y во время выполнения? Камера фиксирована, размер вьюпорта в точках тоже зафиксирован.</p>
<p>Все перерыл нигде не могу найти. Или я что то недогоняю...</p>
]]></description><guid isPermaLink="false">2397</guid><pubDate>Mon, 07 Mar 2016 04:48:18 +0000</pubDate></item><item><title>&#x41A;&#x430;&#x43A; &#x441;&#x434;&#x435;&#x43B;&#x430;&#x442;&#x44C; &#x444;&#x43E;&#x43D; &#x432;&#x44C;&#x44E;&#x43F;&#x43E;&#x440;&#x442;&#x430; &#x43F;&#x440;&#x43E;&#x437;&#x440;&#x430;&#x447;&#x43D;&#x44B;&#x43C;?</title><link>https://fire-monkey.ru/topic/1870-%D0%BA%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%84%D0%BE%D0%BD-%D0%B2%D1%8C%D1%8E%D0%BF%D0%BE%D1%80%D1%82%D0%B0-%D0%BF%D1%80%D0%BE%D0%B7%D1%80%D0%B0%D1%87%D0%BD%D1%8B%D0%BC/</link><description><![CDATA[
<p>Хотелось бы получить эффект, когда загруженный в вьюпорт контент видать, а фон вьюпорта - нет. Вопрос - возможно ли это и как?</p>
]]></description><guid isPermaLink="false">1870</guid><pubDate>Fri, 16 Oct 2015 14:58:30 +0000</pubDate></item><item><title>&#x41A;&#x430;&#x43C;&#x435;&#x440;&#x443; &#x438;&#x437; &#x444;&#x440;&#x435;&#x439;&#x43C;&#x430; "&#x43F;&#x435;&#x440;&#x435;&#x434;&#x430;&#x442;&#x44C;" &#x433;&#x43B;&#x430;&#x432;&#x43D;&#x43E;&#x439; &#x444;&#x43E;&#x440;&#x43C;&#x435;</title><link>https://fire-monkey.ru/topic/1116-%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D1%83-%D0%B8%D0%B7-%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B0-%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%82%D1%8C-%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B9-%D1%84%D0%BE%D1%80%D0%BC%D0%B5/</link><description><![CDATA[
<p>В 3Дэ приложении разместил слой. На нём панель на которую динамически кладу фрейм.</p>
<p>Во фрейме есть Viewport3D и Camera. Так вот никаким образом эта камера не используется приложением.</p>
<p>Есть решение?</p>
<p> </p>
<p>Я как-то предполагал что если есть Viewport3D, то "внутри" этого прямоугольника может использоваться камера если она есть. Однако никаким способом не смог это сделать.. Да, само приложение тоже 3Дэ если это важно.</p>
]]></description><guid isPermaLink="false">1116</guid><pubDate>Mon, 06 Apr 2015 11:28:10 +0000</pubDate></item><item><title>&#x427;&#x443;&#x434;&#x43E;&#x432;&#x438;&#x449;&#x43D;&#x44B;&#x439; &#x431;&#x430;&#x433; &#x441; &#x430;&#x43B;&#x44C;&#x444;&#x430;-&#x43A;&#x430;&#x43D;&#x430;&#x43B;&#x43E;&#x43C; &#x438; StyleBook'&#x43E;&#x43C;</title><link>https://fire-monkey.ru/topic/1044-%D1%87%D1%83%D0%B4%D0%BE%D0%B2%D0%B8%D1%89%D0%BD%D1%8B%D0%B9-%D0%B1%D0%B0%D0%B3-%D1%81-%D0%B0%D0%BB%D1%8C%D1%84%D0%B0-%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%BC-%D0%B8-stylebook%D0%BE%D0%BC/</link><description><![CDATA[<p>Есть моделька человека, собранная из TPlane'ов, на голове - шлем, на шлем накладывается текстура с прозрачными пикселями. Модельку можно вращать. Если подключить StyleBook, то голова перестаёт прорисовываться сквозь прозрачные пиксели при вращении.</p>
<p> </p>
<p>Запустили приложение, голова прорисована:</p>
<p><img src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" alt="9fe0b565f3.png" data-src="http://dl1.joxi.net/drive/0003/1650/247410/150307/9fe0b565f3.png"></p>
<p> </p>
<p>Поворачиваем - голова мгновенно "стирается":</p>
<p><img src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" alt="E2pkl78UaepEmY.png" data-src="http://joxi.ru/E2pkl78UaepEmY.png"></p>
<p> </p>
<p>Отключаем StyleBook - крутим модельку, всё хорошо:</p>
<p><img src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" alt="V2Veq0VSKWXymv.png" data-src="http://joxi.ru/V2Veq0VSKWXymv.png"></p>
<p> </p>
<p> </p>
<p>Как исправить рендеринг сквозь прозрачные пиксели?</p>
<p> </p>
<p>P.S.: Если в StyleBook'e поставить галочку на UseStyleManager, то снова всё отрисовывается нормально, но использовать StyleManager очень неудобно.</p>
<p> </p>
<p> </p>
<p>Код текстурирования</p>
<pre class="ipsCode prettyprint">
// Скопировать часть битмапа в другой битмап:
procedure CopyBitmapToBitmap(
                              const SrcBitmap    : FMX.Graphics.TBitmap; // Из какого битмапа копируем
                              const DestBitmap   : FMX.Graphics.TBitmap; // В какой битмап копируем
                              const SrcRect      : TRectF;               // Какой прямоугольник
                              const DstRect      : TRectF;               // В какой прямоугольник
                              ScaleCoeff         : Single  = 1.0;        // Коэффициент масштабирования (DstRect * ScaleCoeff)
                              Opacity            : Single  = 1.0;        // Коэффициент прозрачности накладываемого изображения
                              FlushBeforeDrawing : Boolean = True;       // Очищать ли предыдущее содержимое
                              Interpolate        : Boolean = False       // Интерполировать ли при масштабировании
                             );
 
  function Max(const A, B: Single): Single; inline;
  begin
    if A &gt; B then Result := A else Result := B;
  end;
 
begin
  if FlushBeforeDrawing then DestBitmap.Clear($00000000);
  DestBitmap.SetSize(Round(Max(DstRect.Left, DstRect.Right) * ScaleCoeff), Round(Max(DstRect.Top, DstRect.Bottom) * ScaleCoeff));
 
  DestBitmap.Canvas.BeginScene;
  DestBitmap.Canvas.DrawBitmap(
                                SrcBitmap,
                                SrcRect,
                                RectF(
                                       DstRect.Left,
                                       DstRect.Top,
                                       DstRect.Left + ((DstRect.Right - DstRect.Left) * ScaleCoeff),
                                       DstRect.Top  + ((DstRect.Bottom - DstRect.Top) * ScaleCoeff)
                                      ),
                                Opacity,
                                not Interpolate
                               );
  DestBitmap.Canvas.EndScene;
end;
 
 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 
procedure TMainForm.DrawSkin(FileStream: TMemoryStream);
type
  TTextureInfo  = array of Integer;      // OffsetX, OffsetY, Width, Height
  TCubeTexture  = array of TTextureInfo; // Front, Back, Left, Right, Top, Bottom
  TSurfaceArray = array of ^TPlane;
 
// Индексы элементов в массивах:
const
  iOffsetX = 0;
  iOffsetY = 1;
  iWidth   = 2;
  iHeight  = 3;
 
  iFront  = 0;
  iBack   = 1;
  iLeft   = 2;
  iRight  = 3;
  iTop    = 4;
  iBottom = 5;
 
  iHead     = 0;
  iTorso    = 1;
  iLeftArm  = 2;
  iRightArm = 3;
  iLeftLeg  = 4;
  iRightLeg = 5;
  iHelmet   = 6;
 
const
  HeadTexture : TCubeTexture = [// X  Y  W  H
                                 [8 , 8, 8, 8], // Front
                                 [24, 8, 8, 8], // Back
                                 [0 , 8, 8, 8], // Left
                                 [16, 8, 8, 8], // Right
                                 [8 , 0, 8, 8], // Top
                                 [16, 0, 8, 8]  // Bottom
                                ];
 
  ... { здесь пропущен список координат для каждой текстуры из битмапа } ...  
 
const
  ScaleCoeff: Single = 16.0;
 
var
  Bitmap: FMX.Graphics.TBitmap;
 
  // Список поверхностей каждой части модели:
  HeadPlanes     : TSurfaceArray;
  TorsoPlanes    : TSurfaceArray;
  LeftArmPlanes  : TSurfaceArray;
  RightArmPlanes : TSurfaceArray;
  LeftLegPlanes  : TSurfaceArray;
  RightLegPlanes : TSurfaceArray;
  HelmetPlanes   : TSurfaceArray;
 
  // Список частей модели:
  ModelParts: array of ^TSurfaceArray;
 
  // Список текстур каждой части модели:
  ObjectTextures: array of ^TCubeTexture;
 
  // I - счётчик по частям модели, J - счётчик по поверхностям:
  I, J: LongWord;
 
begin
  // Загружаем битмап из PNG-файла:
  Bitmap := FMX.Graphics.TBitmap.Create;
  Bitmap.LoadFromStream(FileStream);
 
  // Составляем массив из групп текстур для каждой части модели:
  ObjectTextures := [@HeadTexture, @TorsoTexture, @LeftArmTexture, @RightArmTexture, @LeftLegTexture, @RightLegTexture, @HelmetTexture];
 
  // Составляем список поверхностей:
  HeadPlanes     := [@HeadFront    , @HeadBack    , @HeadLeft    , @HeadRight    , @HeadTop    , @HeadBottom    ];
  TorsoPlanes    := [@TorsoFront   , @TorsoBack   , @TorsoLeft   , @TorsoRight   , @TorsoTop   , @TorsoBottom   ];
  LeftArmPlanes  := [@LeftArmFront , @LeftArmBack , @LeftArmLeft , @LeftArmRight , @LeftArmTop , @LeftArmBottom ];
  RightArmPlanes := [@RightArmFront, @RightArmBack, @RightArmLeft, @RightArmRight, @RightArmTop, @RightArmBottom];
  LeftLegPlanes  := [@LeftLegFront , @LeftLegBack , @LeftLegLeft , @LeftLegRight , @LeftLegTop , @LeftLegBottom ];
  RightLegPlanes := [@RightLegFront, @RightLegBack, @RightLegLeft, @RightLegRight, @RightLegTop, @RightLegBottom];
  HelmetPlanes   := [@HelmetFront  , @HelmetBack  , @HelmetLeft  , @HelmetRight  , @HelmetTop  , @HelmetBottom  ];
 
  // Составляем список частей модели:
  ModelParts := [@HeadPlanes, @TorsoPlanes, @LeftArmPlanes, @RightArmPlanes, @LeftLegPlanes, @RightLegPlanes, @HelmetPlanes];
 
  // Проходимся по каждой части модели (голова, корпус, ...):
  for I := 0 to High(ModelParts) do
  begin
    // Проходимся по каждой поверхности модели:
    for J := 0 to High(ModelParts[I]^) do
    begin
      // Рисуем текстуру на каждой поверхности:
      with (ModelParts[I]^)[J]^ do
      begin
        CopyBitmapToBitmap(
                            Bitmap,
                            TTextureMaterialSource(MaterialSource).Texture,
                            RectF(
                                   (ObjectTextures[I]^)[J][iOffsetX],
                                   (ObjectTextures[I]^)[J][iOffsetY],
                                   (ObjectTextures[I]^)[J][iOffsetX] + (ObjectTextures[I]^)[J][iWidth],
                                   (ObjectTextures[I]^)[J][iOffsetY] + (ObjectTextures[I]^)[J][iHeight]
                                  ),
                            RectF(0, 0, (ObjectTextures[I]^)[J][iWidth], (ObjectTextures[I]^)[J][iHeight]),
                            ScaleCoeff
                           );
 
        // Инвертируем текстуры для симметрии:
        if I in [iLeftArm, iLeftLeg] then
          TTextureMaterialSource(MaterialSource).Texture.FlipHorizontal;
 
      end;
    end;
  end;
 
  FreeAndNil(Bitmap);
end;
</pre>]]></description><guid isPermaLink="false">1044</guid><pubDate>Sat, 07 Mar 2015 13:30:41 +0000</pubDate></item><item><title>&#x41F;&#x43E;&#x437;&#x438;&#x446;&#x438;&#x43E;&#x43D;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; TViewPort3D</title><link>https://fire-monkey.ru/topic/1023-%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-tviewport3d/</link><description><![CDATA[<p>Доброго дня. Надеюсь не достал расспросами  <img src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" alt=":rolleyes:" data-src="https://fire-monkey.ru/uploads/emoticons/default_rolleyes.gif"> . Теперь проблема с вьпортом, а точнее - его выравнивании. Читал пост из ветки : скачал триалку XE7 update 1 - бесполезно, у вьпорта собственные высота и ширина..<br>
 <br>
Пробовал различные выравнивая; засовывал вьюпорт в скролл-бокс, и внаглую задавал ширину и высоту - не помогает.<br>
 <br>
Причем, если задать ControlRoot(TLayout)-&gt;Align = TAlignLayout::Bottom - вьпорт цепляет весь экран. Но тут возникает следующая оказия - при смене ориентации экрана, Layout не растягиваеться на весь экран (выравнивание выставляю то Bottom) . Это как теперь - на каждый чих пользователя, задавать Layout  = Client, или вообще получать кооординаты и подстраивать положение? Может кто сталкивался?</p>
<p> </p>
<p> </p>
<p>Картинки</p>
<blockquote class="ipsStyle_spoiler" data-ipsspoiler=""><p> <br><a class="ipsAttachLink ipsAttachLink_image" href="https://fire-monkey.ru/uploads/monthly_02_2015/post-885-0-85654800-1424787603.jpg" rel="external nofollow"><img src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" data-fileid="746" class="ipsImage ipsImage_thumbnailed" alt="post-885-0-85654800-1424787603.jpg" data-src="https://fire-monkey.ru/uploads/monthly_02_2015/post-885-0-85654800-1424787603.jpg" width="436" data-ratio="114,68"></a><a class="ipsAttachLink ipsAttachLink_image" href="https://fire-monkey.ru/uploads/monthly_02_2015/post-885-0-67564700-1424787627.jpg" rel="external nofollow"><img src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" data-fileid="747" class="ipsImage ipsImage_thumbnailed" alt="post-885-0-67564700-1424787627.jpg" data-src="https://fire-monkey.ru/uploads/monthly_02_2015/post-885-0-67564700-1424787627.jpg" width="435" data-ratio="114,94"></a><br></p></blockquote>
<p> </p>
<p>Код</p>
<blockquote class="ipsStyle_spoiler" data-ipsspoiler="">
<pre class="ipsCode prettyprint">
void __fastcall TForm5::SwitchTo2D()
{
	delete FViewport;
	//delete FContainer;
	ControlRoot-&gt;Visible = true;
}

void __fastcall TForm5::SwitchTo3D()
{
	
FViewport = new TViewport3D(this);


	FViewport-&gt;Align = TAlignLayout::Client;

	//FViewport-&gt;Color = TAlphaColorRec::Null;
	FViewport-&gt;Parent = this;

	FContainer = new TLayer3D(this);
	FContainer-&gt;Projection = TProjection::Screen;
	FContainer-&gt;Align = TAlignLayout::Client;
	FContainer-&gt;Parent = FViewport;

		TImage *img = new TImage(this);
	img-&gt;Bitmap-&gt;Assign(ControlRoot-&gt;MakeScreenshot());
	img-&gt;Parent = FContainer;
	img-&gt;Align = TAlignLayout::Client;
	img-&gt;Margins = ControlRoot-&gt;Margins;

	ControlRoot-&gt;Visible = false;
}
void __fastcall TForm5::Button1Click(TObject *Sender)
{
	((TButton *)Sender)-&gt;Enabled = false;
	SwitchTo3D();
	if (FContainer != NULL)
	{
		TAnimator::AnimateFloat(FContainer, "Position.Z", 500, 1);
		TAnimator::AnimateFloatDelay(FContainer, "Position.Z", 0, 1, 1);
		TAnimator::AnimateFloatWait(FContainer, "RotationAngle.X", 360, 2 , TAnimationType::InOut, TInterpolationType::Back);
	}
	SwitchTo2D();
	((TButton *)Sender)-&gt;Enabled = true;
</pre>
</blockquote>
<p> </p>
<p>Заранее спасибо)</p>]]></description><guid isPermaLink="false">1023</guid><pubDate>Tue, 24 Feb 2015 14:25:32 +0000</pubDate></item><item><title>[&#x41E;&#x442;&#x43A;&#x43B;&#x43E;&#x43D;&#x435;&#x43D;&#x438;&#x435;] [XE7] &#x424;&#x43E;&#x440;&#x43C;&#x430; &#x43D;&#x435; &#x441;&#x43E;&#x445;&#x440;&#x430;&#x43D;&#x44F;&#x435;&#x442; &#x437;&#x430;&#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x439; &#x440;&#x430;&#x437;&#x43C;&#x435;&#x440; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x43E;&#x432;</title><link>https://fire-monkey.ru/topic/756-%D0%BE%D1%82%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-xe7-%D1%84%D0%BE%D1%80%D0%BC%D0%B0-%D0%BD%D0%B5-%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D1%8F%D0%B5%D1%82-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BE%D0%B2/</link><description><![CDATA[<p>Бросаю на форму TViewPort3D, изменяю размер. Запускаю приложение. Такое впечатление, что компонент вообще ничего не слышал свойствах Position и Size.</p>
<p>Скриншот прилагаю.</p>
<p> </p>
<p>Можно ли это как-то побороть?</p>
<p>Спасибо.</p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://fire-monkey.ru/uploads/monthly_11_2014/post-101-0-30674000-1416960670.png" rel="external nofollow"><img src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" data-fileid="601" class="ipsImage ipsImage_thumbnailed" alt="post-101-0-30674000-1416960670_thumb.png" data-src="https://fire-monkey.ru/uploads/monthly_11_2014/post-101-0-30674000-1416960670_thumb.png" width="640" data-ratio="70,78"></a></p>]]></description><guid isPermaLink="false">756</guid><pubDate>Wed, 26 Nov 2014 00:11:53 +0000</pubDate></item><item><title>&#x423; &#x43C;&#x435;&#x43D;&#x44F; &#x43D;&#x435;&#x43A;&#x430;&#x447;&#x435;&#x441;&#x442;&#x432;&#x435;&#x43D;&#x43D;&#x43E; &#x43E;&#x442;&#x43E;&#x431;&#x440;&#x430;&#x436;&#x430;&#x44E;&#x442;&#x441;&#x44F; &#x43A;&#x43E;&#x43D;&#x442;&#x440;&#x43E;&#x43B;&#x44B; &#x432; TLayer3D</title><link>https://fire-monkey.ru/topic/544-%D1%83-%D0%BC%D0%B5%D0%BD%D1%8F-%D0%BD%D0%B5%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE-%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B0%D1%8E%D1%82%D1%81%D1%8F-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8B-%D0%B2-tlayer3d/</link><description><![CDATA[
<p>Привет всем. На 2D форму положил <strong>TViewPort3D</strong>, на него положил <strong>TLayer3D </strong>на котором разместил <strong>TLabel</strong>, <strong>TEdit</strong>, <strong>TButton </strong>и анимацию. При открытии формы 3D эффект работает, однако вид выше указанных компонентов совсем не презентабелен. Те же компоненты вне <strong>TViewPort3D </strong>и <strong>TLayer3D </strong>отображаются нормально. Такая проблема стала наблюдаться только в XE7. В XE6 ее не было.</p>
<p>Прикрепил тестовый проект.</p>
<p><a href="https://fire-monkey.ru/applications/core/interface/file/attachment.php?id=507">Example.zip</a></p>
]]></description><guid isPermaLink="false">544</guid><pubDate>Tue, 09 Sep 2014 09:14:31 +0000</pubDate></item><item><title>&#x41A;&#x430;&#x43A; &#x43F;&#x43E;&#x43C;&#x435;&#x43D;&#x44F;&#x442;&#x44C; &#x443;&#x433;&#x43E;&#x43B; &#x43E;&#x431;&#x437;&#x43E;&#x440;&#x430; &#x432; TViewPort3D?</title><link>https://fire-monkey.ru/topic/8-%D0%BA%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BC%D0%B5%D0%BD%D1%8F%D1%82%D1%8C-%D1%83%D0%B3%D0%BE%D0%BB-%D0%BE%D0%B1%D0%B7%D0%BE%D1%80%D0%B0-%D0%B2-tviewport3d/</link><description><![CDATA[<p>Ставлю на 2D форму <strong>TViewPort3D</strong>, кидаю на него <strong>Sphere </strong>и <strong>Rectangle</strong>, у <strong>Rectangle </strong>ставлю позицию по Z = -4, а у <strong>Sphere </strong>остаётся 0, а отображается как на рисунке, то есть как будто это 2D объекты у которых координата по оси Z не играет никакой роли, а <strong>Rectangle </strong>должен быть спереди сферы. В 3D Application все хорошо.</p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://fire-monkey.ru/uploads/monthly_01_2014/post-6-0-84475700-1388758028.jpg" rel="external nofollow"><img src="https://fire-monkey.ru/applications/core/interface/js/spacer.png" data-fileid="19" class="ipsImage ipsImage_thumbnailed" alt="post-6-0-84475700-1388758028.jpg" data-src="https://fire-monkey.ru/uploads/monthly_01_2014/post-6-0-84475700-1388758028.jpg" width="228" data-ratio="91,67"></a></p>]]></description><guid isPermaLink="false">8</guid><pubDate>Fri, 03 Jan 2014 14:07:17 +0000</pubDate></item></channel></rss>
