gpt4 book ai didi

delphi - 将纹理指定给 TModel3D

转载 作者:行者123 更新时间:2023-12-01 21:38:16 25 4
gpt4 key购买 nike

我有一个TModel3D我可以显示在 viewport3d 中,但我不知道如何对其进行纹理处理...

procedure TForm2.createMap(r:integer;c:integer);
var
player : tmodel3d;

begin
player := TModel3d.Create(self);
player.Visible := true;
Player.Position.X := 0;
player.Position.Y := 0;
player.position.Z := 2;
player.LoadFromFile(gamedir + '\pics\player.dae');
player.Parent := viewport3d1;

我已经尝试了所有我能想到的,但是如何使“texture.jpg”为模型添加纹理?

当我运行这个时,我确实看到没有纹理的模型。

最佳答案

使用我自己的 DAE 模型和纹理文件在 XE2 上进行了上下文测试,似乎运行良好。

procedure TForm2.createMap(r:integer;c:integer);
var
player : tmodel3d;

begin
// NEVER create a 3D object as a sub-component of anything other than a 3D viewport!
player := TModel3d.Create(viewport3d1);
{
Ensure that the Parent is always set before operating on the control.
Some operations (such as texturing) will force the object to be re-rendered
so if your parent isn't specified (or isn't ready for rendering) it will cause
some nasty bugs.
}
player.Parent := viewport3d1;
player.Visible := true;
Player.Position.X := 0;
player.Position.Y := 0;
player.position.Z := 2;
player.LoadFromFile(gamedir+'\pics\player.dae');
player.MeshCollection[0].Material.texture.loadfromfile(gamedir+'\pics\playertex‌​ture.bmp');

从游戏架构的角度来看,您确实应该创建一个类似于 TPlayer 的自定义类,并将模型作为该对象的成员。这样,所有玩家控件都可以与 TPlayer 关联,并且它成为一个描述的实体,而不仅仅是一个您必须从游戏逻辑的更高层手动操作的模型。

此外,您还希望确保模型和相机的位置位于相机的透视框架内。

关于delphi - 将纹理指定给 TModel3D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com