So by today i have a working tool that allows me to export Mass Effect 3 maps into UDK, Unreal Engine 4 and 3ds max (via maxscript) with 99% accuracy.
Here is Citadel Docks from one of the story missions, ingame
http://i.imgur.com/XdouXGD.jpg[/thumb]
And being recreated in Unreal Engine 4.
[thumb]http://i.imgur.com/Y0OL24K.jpg
I know how unreal engine works much better than Source (which i don’t know entirely), so i will describe the whole process and hopefully you can tell me if it is possible to recreate such process for SFM
Here is how it works
- I use modified ME3Explorer to export map into a .t3d format. This is basically a text file that holds no geometry information or material exture information. It only holds basic properties of a static meshes on a level (model name; position; rotation; scale)
- Inside Unreal Engine 4 i import static meshes from that level package and sett materials.
- Only then i import .t3d file and the engine assembles the level from those static meshes.
- Viola! The level now looks 99% identical to ngame original!
So my question is - is it possible to recreate such process for Source Engine?
The .t3d sample and .max sample is right here, they could probobly tell you more about the nature of the process than my poor english
max sample
-------------------------------------------------------
-------------------------------------------------------
CeilingBrace_1x6_2988 = copy $CeilingBrace_1x6
CeilingBrace_1x6_2988.name = "CeilingBrace_1x6_2988" --name the copy as"CeilingBrace_1x6_2988"
$CeilingBrace_1x6_2988.Position=[2100.000, 4900.000, 19900.000]
$CeilingBrace_1x6_2988.scale=[-1.000, 1.000, 1.000]
--Setting the rotation
fn SetObjectRotation obj rx ry rz =
(
-- Reset the object's transformation matrix so that
-- it only includes position and scale information.
-- Doing this clears out any previous object rotation.
local translateMat = transMatrix obj.transform.pos
local scaleMat = scaleMatrix obj.transform.scale
obj.transform = scaleMat * translateMat
-- Perform each axis rotation individually
rotate obj (angleaxis rx [1,0,0])
rotate obj (angleaxis ry [0,1,0])
rotate obj (angleaxis rz [0,0,1])
)
-- Set currently selected Object's rotation to 0.000 0.000 -90.003
SetObjectRotation $CeilingBrace_1x6_2988 0.000 0.000 -90.003
-------------------------------------------------------
-------------------------------------------------------
UE4 .t3d sample
Begin Map Name=/Game/Maps/ME3_Exported
Begin Level NAME=PersistentLevel
Begin Actor Class=StaticMeshActor Name=StaticMeshActor_2600 Archetype=StaticMeshActor'/Script/Engine.Default__StaticMeshActor'
Begin Object Class=StaticMeshComponent Name="StaticMeshComponent0" Archetype=StaticMeshComponent'/Script/Engine.Default__StaticMeshActor:StaticMeshComponent0'
End Object
Begin Object Name="StaticMeshComponent0"
StaticMesh=StaticMesh'/Game/ME3_Mod/Maps/Crate01_M.Crate01_M'
RelativeLocation=(X=4650.906,Y=-411.781,Z=19250.370
RelativeRotation=(Pitch=0.000,Yaw=148.897,Roll=0.000)
RelativeScale3D=(X=1.000,Y=1.000,Z=1.000)
End Object
StaticMeshComponent=StaticMeshComponent0
ActorLabel="StaticMeshActor_2600"
End Actor
End Level
Begin Surface
End Surface
End Map