Code music

Previous topic - Next topic

erico

Here a very nice music creator.
It does so with text, pretty interesting.
http://hiromorozumi.com/beepcomp/index.html

Slydog

#1
Cool idea!
Now I need somebody to do the same thing for a 3D modeling command script program.

Such as (Purely make up numbers!) :
Code (glbasic) Select
[BODY]
BOX 10, 10, 100, 100

[ARM: PARENT=BODY]
BOX 40, 30, 100, 100
BOX 40, 30, 15, 15
JOINT 60, 60 // Arm joint to attach to body

[LEG: PARENT=BODY]
etc
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

erico

Didn´t Aegis Videoscape 3d already done that in 1987?  :P

mentalthink

I remind a python soft for only solid geometry working with commands, but now I don't remind the name of the soft  :rant:

erico

Slydog´s idea would be a nice feat.
I suppose it would be quite hard to add such to GLB´s 3d set, right?

bigsofty

#5
Kinda did this a few years back, a script for creating parented models ( http://www.glbasic.com/forum/index.php?topic=10048.0 ) in "misc/model.cfg"

Code (glbasic) Select
# Sim Machine Config
# I.T. 2012
# Entity TYPES
# 0 = Model

//MODEL base.obj
//MODEL base2.obj

{
NAME "Axiom"
MODEL "obj/axiom.obj"
//PARENTNAME "null"
CHILDNAME "BigArm"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
POS -300.2068 12.9712 -19.8838
ROT 0 0 0
SCL 1.3492 1.3461 1.0885
LPOS 0 0 0
LROT 0 0 0
LSCL 1 1 1
XYZMOVE 0 0 0 0 0 0
XYZROT 0 0 0 0 0 0
}

{
NAME "BigArm"
MODEL "obj/bigarm.obj"
PARENTNAME "Axiom"
CHILDNAME "Slider"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 76 20 20
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 -80 120 0 0
MOVESPEED 0 0.01 0
XYZROT -90 0 0 0 0 0
ROTSPEED 0.01 0 0
}

{
NAME "Slider"
MODEL "obj/slider.obj"
PARENTNAME "BigArm"
CHILDNAME "CPIV"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 18 20 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 -50 190
MOVESPEED 0 0 0.01
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "CPIV"
MODEL "obj/cpiv.obj"
PARENTNAME "Slider"
CHILDNAME "Tube01"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT -90 90 0 0 0 0
ROTSPEED 0.01 0 0
}

{
NAME "CArm"
COLOUR 255 255 255 255
AUTONORMALS FALSE
MODEL "obj/carm.obj"
PARENTNAME "CPIV"
CHILDNAME "Screen"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 334 23 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 -90 90
ROTSPEED 0 0 0.02
}

{
NAME "Tube01"
MODEL "obj/tube01.obj"
PARENTNAME "CArm"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 10 16 -16
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "Screen"
MODEL "obj/screen.obj"
PARENTNAME "CArm"
CHILDNAME "ScreenCam"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS -7 160 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "Emitter"
MODEL "obj/emitter.obj"
PARENTNAME "CArm"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 11 -133 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "TableSup"
MODEL "obj/tablesup.obj"
PARENTNAME "BigArm"
CHILDNAME "TableLat"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 80 -65 -152
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 -65 65 0 0
MOVESPEED 0 0.01 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "TableLat"
MODEL "obj/tablelat.obj"
PARENTNAME "TableSup"
CHILDNAME "TableEas"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 261 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 245 345 0 0 0 0
MOVESPEED 0.01 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "TableEas"
MODEL "obj/tableeas.obj"
PARENTNAME "TableLat"
CHILDNAME "TableNor"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 0 32 25
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "TableNor"
COLOUR 255 255 255 255
AUTONORMALS TRUE
MODEL "obj/tablenor.obj"
PARENTNAME "TableEas"
CHILDNAME "BodyPiv"
TYPE 0
HIDDEN FALSE FALSE
SHADOW TRUE FALSE
RPOS 0 16 156
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 -36 200
MOVESPEED 0 0 0.02
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

//// heart% = EntityLoadMesh("heart.ddd")
// nh_Cover_2_Atria% = EntityLoadMesh("nh_Cover_2_Atria.ddd") //atria covers
// nh_Cover_1_Ventricle% = EntityLoadMesh("nh_Cover_1_Ventricle.ddd") //ventricle cover
// nh_Parts_trac_aorta_pul% = EntityLoadMesh("nh_Parts_trac_aorta_pul.ddd") //back
// nh_Heart_main% = EntityLoadMesh("nh_Heart_main.ddd") //main body
// e_rvent% = EntityLoadMesh("e_rvent.ddd") //right ventricular electrode
// e_hra% = EntityLoadMesh("e_hra.ddd") //high right atrium electrode
// e_hisb% = EntityLoadMesh("e_hisb.ddd") //HIS bundle electrode
// skeleton% = EntityLoadMesh("skeleton.ddd")
// torso% = EntityLoadMesh("torso.ddd")
// cHead% = EntityLoadMesh("head.ddd")
// cArm% = EntityLoadMesh("arm.ddd")
// cSpin% = EntityLoadMesh("spin.ddd")
// cBody% = EntityLoadMesh("body.ddd")
// cTable% = EntityLoadMesh("table.ddd")
// mshCX% = EntityLoadMesh("mshCX.ddd")
// mshLAD% = EntityLoadMesh("mshLAD.ddd")
// mshLTMA% = EntityLoadMesh("mshLTMA.ddd")
// mshPDA% = EntityLoadMesh("mshPDA.ddd")
// mshRCA% = EntityLoadMesh("mshRCAO.ddd")
// aorta% = EntityLoadMesh("aorta.ddd")
// JL4cath% = EntityLoadMesh("JL4cath.ddd")
// JR4cath% = EntityLoadMesh("JR4cath.ddd")
// IVC% = EntityLoadMesh("IVC.ddd")
// nh_heart_val3_AV% = EntityLoadMesh("nh_heart_val3_AV.ddd") // aortic
// nh_heart_val3_PV% = EntityLoadMesh("nh_heart_val3_PV.ddd") // pulmonary
// nh_heart_val3% = EntityLoadMesh("nh_heart_val3.ddd") // tricuspid
// nh_heart_val4% = EntityLoadMesh("nh_heart_val4.ddd") // mitral
//// lungs% = EntityLoadMesh("lungs.ddd")


{
NAME "BodyPiv"
PIVOT
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 2
HIDDEN FALSE FALSE
RPOS 0 18 15
ROT 0 180 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "HeartPiv"
PIVOT
PARENTNAME "BodyPiv"
CHILDNAME "Null"
TYPE 2
HIDDEN FALSE FALSE
RPOS 0 18 -45
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "AnatomyPiv"
PIVOT
PARENTNAME "BodyPiv"
CHILDNAME "Null"
TYPE 2
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "SphereStub"
COLOUR 0 255 25 255
AUTONORMALS TRUE
MODEL "obj/1x1x1-sphere.obj"
//TEXTURE "textures/bmp/bone1.bmp"
PARENTNAME "AnatomyPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
SHADOW FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 10 10 10
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "Skeleton"
MODEL "ddd/skeleton.ddd"
TEXTURE "textures/bmp/bone1.bmp"
PARENTNAME "AnatomyPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
SHADOW FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 0.8 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "Skin"
COLOUR 255 0 255 255
AUTONORMALS FALSE
MODEL "obj/man1.obj"
//TEXTURE "textures/bmp/skin1.bmp"
PARENTNAME "AnatomyPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
SHADOW FALSE FALSE
RPOS 0 16 14
ROT -90 0 0
SCL 50 46 50
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}


// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

{
NAME "nh_Cover_2_Atria"
MODEL "ddd/nh_Cover_2_Atria.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "HeartPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "nh_Cover_1_Ventricle"
MODEL "ddd/nh_Cover_1_Ventricle.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "HeartPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "nh_Parts_trac_aorta_pul"
MODEL "ddd/nh_Parts_trac_aorta_pul.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "HeartPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "nh_Heart_main"
MODEL "ddd/nh_Heart_main.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "HeartPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "e_rvent"
MODEL "ddd/e_rvent.ddd"
//TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "HeartPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "e_hra"
MODEL "ddd/e_hra.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "HeartPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "e_hisb"
MODEL "ddd/e_hisb.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "HeartPiv"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "mshCX"
MODEL "ddd/mshCX.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "mshLAD"
MODEL "ddd/mshLAD.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "mshLTMA"
MODEL "ddd/mshLTMA.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "mshPDA"
MODEL "ddd/mshPDA.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "mshRCAO"
MODEL "ddd/mshRCAO.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "aorta"
MODEL "ddd/aorta.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "JL4cath"
MODEL "ddd/JL4cath.ddd"
//TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "JR4cath"
MODEL "ddd/JR4cath.ddd"
//TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "IVC"
MODEL "ddd/IVC.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "nh_heart_val3_AV"
MODEL "ddd/nh_heart_val3_AV.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "nh_heart_val3_PV"
MODEL "ddd/nh_heart_val3_PV.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "nh_heart_val3"
MODEL "ddd/nh_heart_val3.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

{
NAME "nh_heart_val4"
MODEL "ddd/nh_heart_val4.ddd"
TEXTURE "textures/bmp/tx_heart_vent.bmp"
PARENTNAME "TableNor"
CHILDNAME "Null"
TYPE 0
HIDDEN FALSE FALSE
RPOS 0 0 0
ROT 0 0 0
SCL 1 1 1
XYZMOVE 0 0 0 0 0 0 0
MOVESPEED 0 0 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


{
NAME "ScreenCam"
CAMERA 0.1 1000 45
PARENTNAME "Screen"
CHILDNAME "Null"
TYPE 1
HIDDEN FALSE FALSE
RPOS 30 -80 0
ROT 90 0 0
SCL 1 1 1
XYZMOVE 0 0 -180 -50 0 0
MOVESPEED 0 0.2 0
XYZROT 0 0 0 0 0 0
ROTSPEED 0 0 0
}




Designing hierarchical models like this by hand is a bit of a brain buster though, I wouldn't advise it!  :S

BTW cool link Erico, very interesting!  :good: 
Cheers,

Ian.

"It is practically impossible to teach good programming style to students that have had prior exposure to BASIC.  As potential programmers, they are mentally mutilated beyond hope of regeneration."
(E. W. Dijkstra)

Slydog

Cool code, bigsofty!  Surprisingly similar to my suggestion.

I agree, it is tedious and requires patience. 
My maze 3d models where done in code (both the GLBasic and Unity versions), and they have relatively simple geometry.
I still encountered many problems. They were easy to fix, but hard to find. (Usually flipped triangles!)

But, I have a hard time using a normal modeling program!
I get the concepts, just the UI is hard to master (mainly only tried Blender).
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

bigsofty

Thanks Slydog.

I know what you mean. 3D modellers have to be the most time consuming app the learn to use.

I use Fragmotion(mostly for converting between file formats), mainly because it's relatively cheap and handles lots of game ready formats. It's not very intuitive though and can be confusing at times. Not at the same level of confusion as large scale modellers like 3DSMax but still confusing. Wings3D is probably the easiest to use BUT it creates pretty badly un-optimised models, to the point of being useless.

Not a Blender fan. I hate how you can load in a model and the project file rearranges the Blender GUI to suit the original modeller prefs. ?!?!

The best, for ease of use and easiest to pick up is definitely AC3D (as long as you don't need animation). It's about as easy and intuitive as a 3D modeller can get. I think GLB has some support for it IIRC too? I'd definitely recommend that for quick and easy modelling.
Cheers,

Ian.

"It is practically impossible to teach good programming style to students that have had prior exposure to BASIC.  As potential programmers, they are mentally mutilated beyond hope of regeneration."
(E. W. Dijkstra)