<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=428906&amp;view=findpost&amp;p=3874743</guid>
        <pubDate>Sun, 28 Aug 2022 10:18:56 +0000</pubDate>
        <title>Как наложить текстуру на 3d модель directX?</title>
        <link>https://forum.sources.ru/index.php?showtopic=428906&amp;view=findpost&amp;p=3874743</link>
        <description><![CDATA[Katerina1993: Просмотрев несколько учебников по С++ (так как на Delphi подходящих книг как загрузить x-mesh я не нашла), обнаружила что в коде нет явного указание пути к текстурам. И тут появилась мысль, может быть, они находятся внутри файла формата “.x” и точно, я нашла примерно такой фрагмент кода: <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Material {<br>
     1.000000;1.000000;1.000000;1.000000;;<br>
     34.560001;<br>
     0.315000;0.315000;0.315000;;<br>
     0.000000;0.000000;0.000000;;<br>
    TextureFilename {<br>
       &quot;texture/SSR06_Born2_dif.png&quot;;<br>
     }<br>
	 BumpMapFilename {<br>
       &quot;texture/SSR06_Born2_bp_base.png&quot;;<br>
     }<br>
    }<br>
</div></div><br>
И тут мне стала все понятно, оказывается у меня уже в коде Delphi прописана процедура загрузки текстуры. Просто в файле который я пыталась загрузить отсутствовали пути к текстурам. <br>
Занялась поисками подходящих моделей, но уже с текстурами. Результат на картинках<br>
<br>
Модель Меха(Робота) с текстурами.<br>
<img class='tag-img' src='https://i.ibb.co/1mqz6qT/texture1.jpg' alt='user posted image'><br>
Комната с текстурами.<br>
<img class='tag-img' src='https://i.ibb.co/vmtH7TL/texture2.jpg' alt='user posted image'><br>
Стена и асфальт<br>
<img class='tag-img' src='https://i.ibb.co/HB8FmMh/texture3.jpg' alt='user posted image'><br>
Также вот исходники кода:<br>
<a class='tag-url' href='https://disk.yandex.ru/d/uq3eLh22MYS-sg' target='_blank'>https://disk.yandex.ru/d/uq3eLh22MYS-sg</a>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=428906&amp;view=findpost&amp;p=3872903</guid>
        <pubDate>Sat, 30 Jul 2022 07:49:11 +0000</pubDate>
        <title>Как наложить текстуру на 3d модель directX?</title>
        <link>https://forum.sources.ru/index.php?showtopic=428906&amp;view=findpost&amp;p=3872903</link>
        <description><![CDATA[Katerina1993: Если никто не знает может есть какая-то альтернатива, где можно добавить модель и наложить текстуру, желательно с примером, на статью?]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=428906&amp;view=findpost&amp;p=3872814</guid>
        <pubDate>Thu, 28 Jul 2022 10:48:45 +0000</pubDate>
        <title>Как наложить текстуру на 3d модель directX?</title>
        <link>https://forum.sources.ru/index.php?showtopic=428906&amp;view=findpost&amp;p=3872814</link>
        <description><![CDATA[Katerina1993: Добавила модель с расширением .x, на форму, теперь мне нужно наложить на эту модель текстуру.<br>
Вот как выглядит модель при запуске проекта в Delphi7:<br>
<br>
<span class="b-attach" data-size="32506" data-hits="159" data-attach-id="63681" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=63681' title='Скачать файл' target='_blank'>img1.jpg</a> (, : 159)
		</span><br>
А вот текстура.<br>
<span class="b-attach" data-size="31028" data-hits="161" data-attach-id="63682" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=63682' title='Скачать файл' target='_blank'>cyborg.jpg</a> (, : 161)
		</span><br>
Как наложить текстуру на 3d модель, если модель с расширением .x (Mesh)? Прикладываю исходники <a class='tag-url' href='https://disk.yandex.ru/d/jv1qBIR9hg5uDg' target='_blank'>https://disk.yandex.ru/d/jv1qBIR9hg5uDg</a><br>
<br>
&quot;на disk.yandex потому, что установленный лимит не позволяет загрузить архив&quot;<br>
<br>
Текстура находится в папке image и является bitmap (bmp).<br>
<br>
Также вот код:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">unit primer;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows, &nbsp;Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,</div><div class="code_line">&nbsp;&nbsp;Dialogs, Direct3D9, D3DX9, ExtCtrls, ComCtrls, StdCtrls, dxfunc,</div><div class="code_line">&nbsp;&nbsp;AppEvnts;</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;sVertex=record</div><div class="code_line">&nbsp;&nbsp;x,y,z:Single;</div><div class="code_line">&nbsp;&nbsp;color:DWORD;</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">&nbsp;&nbsp;TForm1 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;StatusBar1: TStatusBar;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ApplicationEvents1: TApplicationEvents;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Timer1: TTimer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Timer1Timer(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormActivate(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormDestroy(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormPaint(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Private declarations }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; // procedure Cleanup;</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Public declarations }</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;type</div><div class="code_line">&nbsp;&nbsp;Mesh = class</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;Rotate: single;</div><div class="code_line">&nbsp;&nbsp; &nbsp;x,y,z: Single;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pMesh: ID3DXMesh;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pMeshTextures:PAIDirect3DTexture9;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pMeshMaterials:PAD3DMATERIAL9;</div><div class="code_line">&nbsp;&nbsp; &nbsp;dwNumMaterials: dword;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure OpenMesh(NameMesh, TexturePath: String);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure DrawMesh;</div><div class="code_line">&nbsp;&nbsp;end; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Form1: TForm1;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; pD3DDevice:IDirect3DDevice9=nil;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; pD3D: IDirect3D9=nil;</div><div class="code_line">&nbsp;&nbsp; Mesh1: Mesh;</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">&nbsp;//http://gamesmaker.ru/programming/directx/direct3d-urok-02-otobrazhenie-obektov/</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;D3DFVF_CustomVertex = D3DFVF_XYZ or D3DFVF_Diffuse or D3DFVF_TEX1;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Mesh.OpenMesh(NameMesh, TexturePath: String);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;x:=15; y:=10; z:=-50; Rotate:=0;</div><div class="code_line">&nbsp;&nbsp;dwNumMaterials:=LoadMesh(NameMesh, // TexturePath</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TexturePath,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pD3DDevice,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pMesh,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pMeshTextures,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pMeshMaterials );</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Mesh.DrawMesh;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;World:D3DMATRIX;</div><div class="code_line">&nbsp;&nbsp;WorldX:D3DMATRIX;</div><div class="code_line">&nbsp;&nbsp;WorldY:D3DMATRIX;</div><div class="code_line">&nbsp;&nbsp;i:Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;D3DXMatrixIdentity(World);</div><div class="code_line">&nbsp;&nbsp;D3DXMatrixIdentity(WorldX);</div><div class="code_line">&nbsp;&nbsp;D3DXMatrixIdentity(WorldY);</div><div class="code_line">&nbsp;&nbsp;Rotate:=Rotate+0.009 &nbsp;;</div><div class="code_line">&nbsp;&nbsp;//Поворот модели</div><div class="code_line">&nbsp;// D3DXMatrixRotationx(worldx,Rotate);</div><div class="code_line">&nbsp;// D3DXMatrixRotationy(worldy,Rotate);</div><div class="code_line">&nbsp;&nbsp;D3DXMatrixMultiply(world,worldx,worldy);</div><div class="code_line">&nbsp;&nbsp;world._41:=x; world._42:=y; world._43:=z; </div><div class="code_line">&nbsp;&nbsp;pD3DDevice.SetTransform(D3DTS_WORLD, World);</div><div class="code_line">&nbsp;&nbsp;pD3DDevice.SetRenderState(D3DRS_LIGHTING, DWORD(0));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;for i:=0 to dwNumMaterials-1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;pD3DDevice.SetTransform(D3DTS_WORLD, world);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;pD3DDevice.SetMaterial(pMeshMaterials[i]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (pMeshTextures[i]&#60;&#62;nil) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pD3DDevice.SetTexture(0, pMeshTextures[i]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;pMesh.DrawSubset(i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure SetupCamera; &nbsp; //onoaiiaea eaia?u</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;ViewMatrix: TD3DMatrix;</div><div class="code_line">&nbsp;&nbsp;Eye: TD3DVector;</div><div class="code_line">&nbsp;&nbsp;At: TD3DVector;</div><div class="code_line">&nbsp;&nbsp;Up: TD3DVector;</div><div class="code_line">begin</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Eye.x := 10; Eye.y := 10; Eye.z := -60;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;At.x := 20; &nbsp;At.y := 20; &nbsp;At.z := 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Up.x := 0; &nbsp;Up.y := 1; &nbsp;Up.z := 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;D3DXMatrixLookAtLH(ViewMatrix, Eye, At, Up);</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp;pD3DDevice.SetTransform(D3DTS_VIEW, ViewMatrix);</div><div class="code_line">end;</div><div class="code_line">procedure TForm1.Timer1Timer(Sender: TObject);</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;pD3DDevice.Clear(1, nil, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; D3DCOLOR_XRGB(0,0,0), 1.0, 0);</div><div class="code_line">&nbsp;&nbsp;pD3DDevice.BeginScene;</div><div class="code_line">&nbsp;&nbsp;Mesh1.DrawMesh;</div><div class="code_line">&nbsp;&nbsp;pD3DDevice.EndScene;</div><div class="code_line">&nbsp;&nbsp;pD3DDevice.Present(nil,nil,0,nil);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormActivate(Sender: TObject);</div><div class="code_line">begin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp;DX3DInit(pD3D,pD3DDevice,form1.Handle,800,600,D3DFMT_A8R8G8B8,false);</div><div class="code_line">&nbsp;&nbsp;SetupCamera;</div><div class="code_line">&nbsp;&nbsp;Mesh1:=Mesh.Create;</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormDestroy(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;pD3D:=nil;</div><div class="code_line">&nbsp;&nbsp;pD3DDevice:=nil;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormPaint(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">Mesh1.OpenMesh(&#39;robot1.x&#39;,&#39;mesh\&#39;);</div><div class="code_line">Timer1.Enabled:=True;</div><div class="code_line">//D3DXLoadMeshFromXA()</div><div class="code_line">//Cleanup;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	